本篇主要体验:编写C#,IL代码,用"VS2012开发人员命令提示"编译成程序集,并运行程序. □ C#文件编译为程序集 →在F盘创建as文件夹→在as文件夹下创建MyClass.cs→用记事本打开编写如下代码,并保存 using System; public class MyClass { public static void PrintSth() { Console.WriteLine("Hello"); } } →打开"VS2012开发人员命令提示&…
建议125:避免用FCL的类型名称命名自己的类型 试想过自己写一个Socket类型吗?如果没有,我们来尝试一下: public class Socket { //省略 } 把以上代码同某些其他工具类封装到某个dll里,让其他人调用.调用者代码如下: public class SampleInvoker { public void DoSomethingWithSocket() { Socket socket=new Socket(); //省略 } } 接着编译.运行程序,我们会发现编译没有报错…
建议93:构造方法应初始化主要属性和字段 类型的属性应该在构造方法调用完毕前完成初始化工作.如果字段没有在初始化器中设置初始值,那么它就应该在构造方法中初始化. 类型一旦被实例化,那么它就应该被视为具有完整的行为和属性. class Company { Employee specialA = new Employee() {Name = "Mike"}; Employee specialB; public Employee CEO { get; set; } public Compan…
建议91:可见字段应该重构为属性 字段和属性的本质区别就是属性是方法. 查看下面这个Person类型: class Person { public string Name { get; set; } } 经过编译器编译后,针对属性Name实际会生成一个private字段和两个public方法: [CompilerGenerated] private string <Name>k__BackingField; [CompilerGenerated] public void set_Name(st…