随笔分类 -  c#

摘要:该方法只能找实现某个接口的类,不能找继承某个抽象类的子类 阅读全文
posted @ 2019-02-18 21:52 热敷哥 阅读(2066) 评论(0) 推荐(0)
摘要:之前认为,volatile 修饰的变量 执行的是 原子性操作,上述代码 应该显示 1000;实际上: 不是每次都是1000; 参考了网上大神的解释,大概明白了 volatile 的真正意义:它只是保证每个线程读取到的都是最新的值,不会读取到"脏数据"(这里用脏数据不是太准确,小弟是个新手,不知道该用 阅读全文
posted @ 2018-12-09 16:12 热敷哥 阅读(455) 评论(0) 推荐(0)
摘要:HashSet<T>是一个相对“冷门”的类型,平时在项目中用得不多,但是在特定的业务中可以大用。 先来了解下HashSet<T>类,主要被设计用来存储集合,做高性能集运算,例如两个集合求交集、并集、差集等。从名称可以看出,它是基于Hash的,可以简单理解为没有Value的Dictionary。 Ha 阅读全文
posted @ 2018-08-12 23:16 热敷哥 阅读(7663) 评论(0) 推荐(0)
摘要://如果没有定义 wjire 或者 refuge, //编译器不会再元数据中生成特性信息,也就是说利用反射找不到特性信息 //但是,特性类的定义元数据和实现仍在程序集中 //#define wjire #define refuge using System; using System.Diagnostics; using System.Reflection; namespace Te... 阅读全文
posted @ 2018-04-29 19:40 热敷哥 阅读(133) 评论(0) 推荐(0)
摘要:当声明一个委托,如下: delegate void Feedback(int value); 编译器实际上定义了如下一个类: 删除委托: 委托链不足的地方: 1.除了最后一个返回值,其他所有回调方法的返回值都会被丢弃; 2.如果被调用的委托中有一个抛出了异常或者阻塞了很长一段时间,那么后续的所有委托 阅读全文
posted @ 2018-04-26 17:30 热敷哥 阅读(165) 评论(0) 推荐(0)
摘要:1、位逻辑非运算 ~ 位逻辑非运算是单目的,只有一个运算对象。位逻辑非运算按位对运算对象的值进行非运算,即:如果某一位等于0,就将其转变为1;如果某一位等于1,就将其转变为0。 比如,对二进制的10010001进行位逻辑非运算,结果等于01101110,用十进制表示就是: ~145等于110;对二进 阅读全文
posted @ 2018-04-22 22:24 热敷哥 阅读(1619) 评论(0) 推荐(0)
摘要:Console.WriteLine("***********************************************"); { //1.0获取方法 MethodInfo method = typeof(string).GetMethod("Substring"... 阅读全文
posted @ 2018-03-30 22:34 热敷哥 阅读(168) 评论(0) 推荐(0)
摘要:例子2: 显示结果: jpeg 阅读全文
posted @ 2018-03-28 11:23 热敷哥 阅读(526) 评论(0) 推荐(0)
摘要:extern alias outer;//必须位于所有的 using 前面 using System; using FourPerson = 第四章; using SevenPerson = 第七章._1; class Person { public int Gid { get; set; } } namespace 第七章._1 { class Progra... 阅读全文
posted @ 2018-03-27 00:00 热敷哥 阅读(540) 评论(0) 推荐(0)
摘要:捕获变量:捕获的是变量,而不是创建委托实例时它的值!!!! 1.捕获外部变量 运行结果如下: 首先,count 相对于匿名方法来说,是一个外部变量, 同时,方法内部定义的值类型是存储在栈上的,因此 count 是存储在栈上的, 那为什么在 MethodInvoker() 方法运行完之后, count 阅读全文
posted @ 2018-03-24 15:37 热敷哥 阅读(283) 评论(0) 推荐(0)
摘要:class Program { static void Main(string[] args) { /* * 不管是显示还是隐式转换,一种类型都只能出现一次 */ Console.WriteLine("*******************... 阅读全文
posted @ 2018-03-21 20:05 热敷哥 阅读(226) 评论(0) 推荐(0)
摘要:聊一聊C#的Equals()和GetHashCode()方法 博客创建一年多,还是第一次写博文,有什么不对的地方还请多多指教。 关于这次写的内容可以说是老生长谈,百度一搜一大堆。大神可自行绕路。 最近在看Jeffrey Richter的CLR Via C#,在看到GetHashCode()方法的时候 阅读全文
posted @ 2018-03-18 21:40 热敷哥 阅读(198) 评论(0) 推荐(0)
摘要:协变:派生类=>基类 假设有这样一个类: 但是由于我们知道是返回一个Person类的实例,所以返回类型 object 写在这里总会觉得很别扭,我们希望写成: 显然,这是错的!虽然这是错的,但这就是返回类型的协变性,只是非泛型接口和方法重载不支持这一特性. 如果一定要这样写,只能使用显示接口实现: 如 阅读全文
posted @ 2018-03-16 20:21 热敷哥 阅读(155) 评论(0) 推荐(0)
摘要:普通方法构造表达式树 利用Lambda表达式构造表达式树 将表达式树转换成可执行代码 阅读全文
posted @ 2018-03-16 10:00 热敷哥 阅读(132) 评论(0) 推荐(0)
摘要:Nullable<T> 内部实现了显示和隐式转换 显示转换: Nullable<int> nullable = new Nullable<int>(10); int x = (int)nullable; 隐式转换: Nullable<int> i = 100; 装箱拆箱: 阅读全文
posted @ 2018-03-15 10:25 热敷哥 阅读(124) 评论(0) 推荐(0)
摘要:值传递 传递的是变量在堆栈上的值的副本 值类型在堆栈上存的就是实际的值, 引用类型在堆栈上存的是一个地址,这个地址就是该引用类型在托管堆上存放的实际的值的地址 以修改文件为例, 值类型的值传递,就好比先复制一份该文件,然后再对复制后的文件进行修改 引用类型的值传递,就好比传递的是快捷方式的副本,然后 阅读全文
posted @ 2018-03-14 20:22 热敷哥 阅读(164) 评论(0) 推荐(0)
摘要:1.class 是引用类型, struct 是值类型 2.定义类用 class,定义结构体用 struct 3.结构体中,不能对字段或者属性进行初始化 4.class有默认的无参数的构造函数,但如果显示的定义了一个构造函数,编译器就不会再自动生成隐式的无参数的构造函数了;而struct,无论你是否显 阅读全文
posted @ 2018-03-13 09:41 热敷哥 阅读(1075) 评论(0) 推荐(0)
摘要:class Program { static void Main(string[] args) { Complex c1 = new Complex(1, 2); Complex c2 = new Complex(3, 4); Complex c3 = c1 + c2;... 阅读全文
posted @ 2018-03-12 16:42 热敷哥 阅读(140) 评论(0) 推荐(0)
摘要:引言: 在C# 1.0中我们经常使用foreach来遍历一个集合中的元素,然而一个类型要能够使用foreach关键字来对其进行遍历必须实现IEnumerable或IEnumerable<T>接口,(之所以必须要实现IEnumerable这个接口,是因为foreach是迭代语句,要使用foreach必 阅读全文
posted @ 2018-03-11 00:11 热敷哥 阅读(176) 评论(0) 推荐(0)
摘要:string path = @"C:\Users\Administrator\Desktop\1.txt"; using (FileStream ws = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) { ... 阅读全文
posted @ 2018-03-04 23:57 热敷哥 阅读(458) 评论(0) 推荐(0)