重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: 李维强-15级
打印 上一主题 下一主题

[C#] 开贴 重新学习C#

[复制链接]

299

主题

684

帖子

6998

积分

学生管理组

Rank: 8Rank: 8

积分
6998
11#
 楼主| 发表于 2017-6-17 21:25:33 | 只看该作者
本帖最后由 李维强-15级 于 2017-6-17 21:38 编辑

申明全局变量
C#里面定义全局变量是在以下两种方式任选其一。
1:类里面申明static来完成


2:单条件模式(单例)
http://blog.csdn.net/sven_xu/article/details/46324023
回复 支持 反对

使用道具 举报

299

主题

684

帖子

6998

积分

学生管理组

Rank: 8Rank: 8

积分
6998
12#
 楼主| 发表于 2017-6-25 15:19:06 | 只看该作者
回复 支持 反对

使用道具 举报

299

主题

684

帖子

6998

积分

学生管理组

Rank: 8Rank: 8

积分
6998
13#
 楼主| 发表于 2017-12-6 20:07:24 | 只看该作者
本帖最后由 李维强-15级 于 2017-12-10 22:28 编辑

类 部分的概念
类和对象的区别:
类只是一个模板,模子,对象是通过类实例化过后的东西,也就是分配了内存了的,通过构造函数等初始化过后了的东西。

const 和readonly有区别:
readonly可以被赋值,但是只能在构造函数里面赋值,是实例过后才有的东西,其他地方不能更改了,这就是为什么每个实例的readonly字段可以不同,但是也不能被修改的原因。
而const在类里面是共享的,静态的,不需要实例化就有的东西,而且不能被再次赋值,只能用,通常装一些固定的值,如PI,E等参数。

派生
只要是派生类,只要实例化了过后,都会在基类的基础上再分配更多的内存,派生类保留了基类的东西,内存更大。只是相应的virtual override等修饰会有不同的调用规则

virtual修饰符
虚属性或虚方法,但是方法一旦被实现重写,且实例化了过后,这么方法就一直存在了,即使从派生类转换到基类,那么在基类里面,也是被派生类的方法重写,实际上用的就是派生类的方法。《C#本质论第4版,6.2.1》

new和override的区别和联系
讨论的情况是他们都在派生类里面的,如果基类是虚函数,那么在派生类函数前面加new 或者override都是隐藏了基类的方法,但是都可以用base.xxx访问得到基类的方法。但是如果派生类赋值给基类,那么在加new的情况下,基类的方法还是基类的,那么在加override的情况下,基类的方法会被重写为派生类的方法,当然同样可以在派生类里面使用base.XXX访问到基类的原来方法。总结,也就是赋值过后有区别,不然都一样。
任何加上override的方法都会被自动成为虚方法,也就是默认加上个virtual。

构造函数
默认构造函数是不带参数的,任何派生类的构造函数都是先要调用其父类的构造函数,再执行自己的构造函数,如果派生类有多级,那么编译器就是回溯到最基级调用构造函数,然后再一级一级的调用派生类的构造函数,最后完成初始化。
如果基类构造函数是带参数的情况,那么派生类是需要给基类构造函数传递参数的,用base(xxx xxx)这种形式

静态构造函数
静态构造函数,是在调用的时候才会被执行,如果在有实例化过程的情况下,同样是先执行基类的静态构造函数,再执行派生类的静态构造函数。
https://www.cnblogs.com/jiagoushi/p/3775046.html    (这个帖子的第二个例子)
如果在没有实例化的情况下,直接使用一个类的情况下,静态构造函数只会被调用1次,而且是执行的基类的静态构造函数,https://www.cnblogs.com/jiagoushi/p/3775046.html    (这个帖子的第一个例子)

多态性
一般是利用abstract关键词来在基类里面写个纯虚函数,然后再去给其他类继承,继承过后其他类就有且必须有相应的 abstract 实现方法了,就是继承类里面去override基类里面被abstract修饰了的东西。那么该基类会被多个其他类继承,那么基类里面被abstract修饰的东西会被不同的继承类里面override不同的实现。也就是说在不同的派生类里面,对于相同的方法名会有不同的实现。那么问题的关键就来了,当不同的继承类用“=”号,重新赋值给基类的时候,此时的那个基类的纯虚方法就有了不同的实现,这个时候,拿着这个基类,去调用那个纯虚方法,就有对应的继承类的实现方法了。这就是多态,



回复 支持 反对

使用道具 举报

299

主题

684

帖子

6998

积分

学生管理组

Rank: 8Rank: 8

积分
6998
14#
 楼主| 发表于 2019-6-18 22:10:52 | 只看该作者
string 用法合集
[C#] syntaxhighlighter_viewsource syntaxhighlighter_copycode
                // 为了满足20160302-003 的格式,下面先找出20160302有多少个审核单,然后再在那个基础上加1,最后得到审核单编号
                sql = "";
                sql = "select * from T_M_transFee where transFeeNum like '%" + DateTime.Now.ToString("yyyyMMdd") + "%'";
                int n = BaseDao.execute(sql);
                n++;
                string transFeeNum = "YF"+DateTime.Now.ToString("yyyyMMdd") + "-" + n.ToString("000");
回复 支持 反对

使用道具 举报

299

主题

684

帖子

6998

积分

学生管理组

Rank: 8Rank: 8

积分
6998
15#
 楼主| 发表于 2020-2-6 22:30:38 | 只看该作者
回复 支持 反对

使用道具 举报

299

主题

684

帖子

6998

积分

学生管理组

Rank: 8Rank: 8

积分
6998
16#
 楼主| 发表于 2024-7-26 08:37:43 | 只看该作者
[C#] syntaxhighlighter_viewsource syntaxhighlighter_copycode
 public class User
 {
     public string? Name { get; set; }
     public string? Role { get; set; }
 }
 internal class Program
 {
     static void Main(string[] args)
     {
        // Define a list of users
         var users = new List<User>
     {
         new User { Name = "Alice", Role = "Admin" },
         new User { Name = "Bob", Role = "Member" },
         new User { Name = "Jay", Role = "Member" },
         new User { Name = "Krishna", Role = "Admin" },
         new User { Name = "An", Role = "Member" },
         new User { Name = "Ka", Role = "Guest" },
         
     };

         // CountBy Role using GroupBy and Select
         var roleCounts = users
             .GroupBy(user => user.Role) // Group users by their roles
             .Select(group => new { Role = group.Key, Count = group.Count() }); // Select the role and count for each group
          
      // Print the results
         foreach (var roleCount in roleCounts)
         {
             Console.WriteLine($"Role: {roleCount.Role}, Count: {roleCount.Count}");
         }
     }
 }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-12-22 00:50 , Processed in 4.195931 second(s), 25 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表