CLR via C#
PanZelin_up
放开我让我去学习好不好
展开
-
C# 泛型 学习笔记(七)
CLR via C# 学习笔记(七) 泛型 一、允许在引用类型、值类型、接口中定义泛型方法List< T > 优势: 源代码保护,不需要访问List< T >的源代码 类型安全 比如List< DateTime > Add(String) 之后会编译报错 性能好 由于类型安全,不需要强制类型转换,不如List[0] 不需要强制转成DateTime 与ArrayList相比 ,存引用类型差不多;存值类型List更快,因为ArrayList存储值类型也会大量装箱 二、IL原创 2021-09-01 15:18:30 · 145 阅读 · 0 评论 -
C# 事件 学习笔记(六)
CLR via C# 学习笔记(六) 事件 CLR事件模式以委托为基础 委托是调用回调方法的一种类型安全的方式 eg: MailManage收到邮件时,会公开NewMail事件, 在User1 和 User2等级对MailManage事件的关注, MailManage对象将NewMail对象,发送给已经登记的方法 一、 把A和B放在一起,委托A执行完,再执行B 这样B就不用检测A是否完成,已经委托A了 this.A += new EventHandler(B); 二、定义事件 public event E原创 2021-08-25 09:50:19 · 126 阅读 · 0 评论 -
C# 参数 学习笔记(五)
CLR via C# 学习笔记(五) 常量和字段 一、ref和out 两者都是按照地址传递,使用后都无法改变原来参数的值。 out传递时,参数清空。就是无法传递参数,传递进去会被初始化 二、params关键字 传递可变数量的参数 void Dispaly(params Object[] objects ){ 遍历object --> console(objects[n].GetType()) } 调用: Dispaly("123", 2, new Object()); 结果: String Int原创 2021-08-23 10:36:51 · 136 阅读 · 0 评论 -
C# 常量和字段 学习笔记(四)
CLR via C# 学习笔记(四) 常量和字段 一、常量 常量必须在编译时确定,定义常量就是创建元数据 二、字段 字段修饰符: static 类型状态,而不是对象状态 readonly 这种字段只能有一个构造器方法中的代码写入,只调用一次,就是在对象首次创建时。 volatile 标记所有引用类型、基础类型 volatile并不保证线程安全性,它只保证任何时候你读取到的都是最新值 个人理解: volatile 只是说这个变量在用到的时候,每次去内存中取值,而不在寄存器中取值 eg: readonly标记原创 2021-08-19 14:17:09 · 94 阅读 · 0 评论 -
CLR寄宿和AppDomain
CLR寄宿和AppDomain(一) CLR(Common Language Runtime 公共语言运行时):提供的核心功能:内存管理、程序集加载、安全性、异常处理、线程同步。 寄宿(hosting)使任何应用程序都能利用CLR的功能,它让现有的一些程序至少能部分使用托管代码编写,还可以为程序提供通过编译来进行自定义和扩展的能力。其中允许扩展性,意味第三方DLL可能会在程序中运行,DLL可能企...原创 2019-10-22 22:35:20 · 305 阅读 · 0 评论 -
C# 类型 成员基础 学习笔记(三)
CLR via C# 学习笔记(三) 类型 成员基础 一、类型和成员基础 常量、字段、方法 实例构造器 :非static构造器,作用于非静态字段(实例对象字段) 类型构造器 :static构造器,作用于静态字段(类型状态字段) 操作符重载 转换操作符 属性、事件 二、类型的可见性 定义类型不显示指定可见性,C#会帮你指定为internal public 所有可见 internal 程序集可见 protected 子类可见 protected internal 同一个程序集、以及程序集里的子类 priv原创 2021-08-18 14:00:15 · 67 阅读 · 0 评论 -
C# 字符串留用 Intern与IsInterned
C# 字符串留用 Intern与IsInterned 使用IsInterned时,如果参数不在线程堆上,那么就返回null,并不会创建新字符串,如下图 test3为null,说明“xyz”不在线程堆上; test4为“x”,说明“x”在线程堆上 有一个现象,我们把test5放在test3后面声明一个“xyz” 运行后可以看到test3不为null,这说明在程序运行时,“xyz”已经在test5的参数里存到了堆上。 ...原创 2021-08-17 21:58:27 · 215 阅读 · 0 评论 -
C# 基元类型 引用类型 值类型 学习笔记(二)
CLR via C# 学习笔记(二) 基元类型 引用类型 值类型 一、基元类型 编译器能直接支持的数据类型,比如int, short, long, double等。 Int32 x = 2; //x是32位值 Int64 y = x; //隐式转型为64位值 溢出检测 check和uncheck操作符 下面的代码就抛出溢出异常 check{ //允许溢出的代码放在uncheck中 Byte b = 100; b += 200; } 二、引用类型和值类型 引用类型从托管堆分配,new之后返回对象原创 2021-08-16 21:21:30 · 126 阅读 · 0 评论 -
C# 类型基础 学习笔记(一)
CLR via C# 学习日记(一) C#类型基础 一、类型基础 所有类型都由System.Object派生 Equals 判断两对象是否相同 对于值类型来说是比较值;对于引用类型来说是比较地址是否相同; bool Equals(Object objA, Object objB); bool Equals(Object obj); GetHashCode() 返回对象的哈希码 GetType() 返回调用该方法的对象是什么类型 该方法是非虚方法,目的是为了防止重写,隐瞒类型,破坏类型安全 ToString原创 2021-08-16 16:03:36 · 75 阅读 · 0 评论