摘要:
1. 访问一个资源所需的步骤 1). 调用IL指令newobj,为代表资源的类型分配内存(一般使用C# new 操作符来完成)。 2). 初始化内存,设置资源的初始状态并使资源可用。类型的实例构造器负责设置初始状态。 3). 访问类型的成员来使用资源(有必要可以重复)。 4). 摧毁资源的状态以进行 阅读全文
摘要:
1. 字符串一经创建,便不能以任何方式修改,只能修改引用。 2. ToLowerInvariant() 和 ToUpperInvariant() 以忽略语言文化的方式将字符串转换为小写或大写形式。性能比ToLower() 和 ToUpper()好。而且Microsoft对执行大写比较的代码进行了优化 阅读全文
摘要:
1. 值类型的变量永远不会为null,所有需要使用System.Nullable<T> 2. 操作数是null,结构是null;==、!=操作数都为null,则返回true;<、>、<=、>= 任何一个操作数为null,则返回false。 3. 操作可空类型的速度慢于非可空类型速度。 4. ?? 不 阅读全文
摘要:
1. 特性继承自System.Attribute,能作用于TypeDef(类、结构、枚举、接口和委托),MethodDef(含构造器),ParamDef,FieldDef,PropertyDef,EventDef,AssemblyDef,ModuleDef。 2. AttributeUsageAtt 阅读全文
摘要:
1. 委托是方法的包装器,使方法能通过包装器来间接回调。在一个类型中通过委托来调用另一个类型的私有成员,只要委托对象是具有足够安全性/可访问性的代码创建,便没有问题。 2. 协变性:方法能返回从委托的返回类型派生的一个类型。逆变性:方法获取的参数可以是委托的参数类型的基类。 3. 委托实际上是一个类 阅读全文
摘要:
1. 数组隐式继承 System.Array,所以数组是引用类型。变量包含的是对数组的引用,而不是包含数据本身的元素。 2. 数组协变性。将数组从一种类型转换为另一种类型。 string[] sa = new string[100]; object[] oa = sa; oa[5] = "Jeff" 阅读全文
摘要:
1. 枚举继承System.Enum,后者继承 System.ValueType,所以枚举是值类型。 2. 枚举不能定义任何方法、属性和事件,不过可以定义扩展方法 3. ToString()方法 Color c = Color.Blue; Console.WriteLine(c); // "Blue 阅读全文
摘要:
今天我们来比较一下集合检索方法性能更优问题,测试代码 public class Entity { public int Id { get; set; } public int No { get; set; } public string Col1 { get; set; } public strin 阅读全文
摘要:
在定义linq查询表达式时,查询是不会执行,查询会在迭代数据项时运行。它使用yield return 语句返回谓词为true的元素。 var names = new List<string> { "Nino", "Alberto", "Juan", "Mike", "Phil" }; var nam 阅读全文
摘要:
在上一篇文章中,我们比较出单表插入9999行数据,Freesql > Dapper > EfCore。在本文中,我们来看看级联插入 构建9999行数据 List<Entity> datas = new List<Entity>(); for (int i = 0; i < 9999; i++) { 阅读全文