摘要:
Lambda 表达式分为三个部分:1 参数定义部分。参数是未类型化的,因此编译器可以根据上下文推断出他们的类型。2 =>运算符,把Lambda表达式的参数与表达式体分开。3 表达式体。delegate int TwoIntegerOperationDelegate(int paramA, int paramB);static void PerformOperations(TwoIntegerOperationDelegate del){...}PerformOperations((paramA, paramB) => paramA + paramB);如果使用匿名方法Perform 阅读全文
摘要:
可选参数-必须有个默认值,默认值必须是字面值,常量值,新对象实例或者默认值类型值。public List GetWords( string sentence, bool capitalizeWords = false){...}-可选参数顺序,使用可选值时,他们必须位于方法的参数列表末尾。没有默认值的参数不能放在有默认值的参数后面。public List GetWords( bool capitalizeWords = false, string sentence){...}上面的代码是非法的。命名参数 named parameters 阅读全文
摘要:
C#4引入dynamic关键字,定义变量时,可以不初始化它的值。dynamic类型仅在编译期间存在,在运行期间会被System.Object类型替代。dynamic myDynamicVar;myDynamicVar.DoSomething("With this!"); 无论myDynamicVar实际包含什么值,这段代码都会编译,但是如果请求的成员不存在,在执行代码的时候会生成一个RuntimeBinderException类型的异常。(using Microsoft.CSharp.RuntimeBinder) 阅读全文
摘要:
定义泛型类创建泛型类,在类定义中包含尖括号语法class MyGenericClass{...}T可以是任意标识符,只要遵循通常的C#命名规则即可。泛型类可以在其定义中包含多个类型,用逗号分隔开class MyGenericClass{...}定义了这些类型后,就可以在类定义中像使用其他类型那样使用它们。如果把构造函数改为 innerT1Object = new T1();编译会出错,因为当前不知道T1是什么,也不能使用它的构造函数,甚至可能没有构造函数。default关键字如果像这样赋值innerT1Object = null;编译会出错,因为此时不知道此类型是值类型还是引用类型那么可以用d 阅读全文
摘要:
Sytem.Nullable, ?, ?? 用法 阅读全文
摘要:
使用自动属性时,只能通过属性访问数据,不能通过底层私有字段,因为我们不知道底层私有字段的名称,是编译期间定义的。所以也没法对字段赋值或取值进行校验或限制。无法使用这种方式定义只读或只写属性。 阅读全文
摘要:
接口接口是把公共实例(非静态)方法和属性组合起来,以封装特定功能的一个集合。不能像实例化一个类那样实例化接口。接口不能包含实现其成员的任何代码,而只能定义成员本身。实现过程必须在实现接口的类中完成。一个类可以支持多个接口,多个类也可以支持相同的接口。接口可以继承一个或多个基接口。可删除的对象支持IDisposable接口的对象必须实现其Dispose()方法,即它们必须提供这个方法的代码。当不再需要某个对象时,就调用这个方法,释放重要的资源,否则,该资源会等到对垃圾回收调用析构方法时才释放。这样可以更好地控制对象所使用的资源。using关键字可以在代码块中初始化使用重要的资源对象,会在这个代码 阅读全文
摘要:
Main()是C#应用程序的入口点,执行这个函数就是执行应用程序。Main()函数可以使用以下四种版本:static void Main()static void Main(string[] args)static int Main() //0反映了正常终止static int Main(string[] args)args是从应用程序外部接受信息的方法,运行期间指定,形式是命令行参数 阅读全文
摘要:
string类型变量可以看作是char变量的只读数组string myString = "A string";char myChar = myString[1];可以将一个string转换为char数组char[] myChars = myString.ToCharArray();也可以foreach循环使用字符串foreach(char character in myString){ Console.WriteLine("{0}", character);}.Length 获取元素个数.ToCharArray() 转换为字符数组.ToLower() 转 阅读全文