C#入门经典5

2020/8/30

1、给字符串变量赋值时,如果字面值包含引号,需要使用转义序列,例如:

myString = “”myInteger” is “;

又如 是换行,\则输出一个。

2、可以使用using语句为名称空间提供一个别名:例如 using LT = LevelTwo;

3、可以使用#region和#endregion来创建代码块区域,方便阅读。

4、三元运算符:<test> ? <resultIfTrue> : <resultIfFalse>

5、格式化代码:Ctrl + E, D

6、循环的中断:break(立即终止);continue(终止当前循环,继续执行下一次循环);goto(可以跳出循环,最好不要用,因为不易阅读和理解);return(跳出循环及其包含的函数)。

7、显式类型转换时,可以使用checked()和unchecked()关键字检查溢出。称为表达式的溢出检查上下文。但使用Convert时使用的是checked,而且无法再使用unchecked.

8、数组是一个变量的索引列表,存储在数组类型的变量中。

9、for循环和foreach循环的区别是foreach循环是对集合内容进行只读访问,所以不能改变任何元素的值。

10、一维数组理解成一条线,二维数组理解成一个表格,三维数组理解成为一个立方体。

11、char类型实际存储的是与ushort一样的数字表示的Unicode字符集中的一个字符。

12、锯齿数组(jagged array)其中每个元素都是另一个数组。注意这些数组都必须有相同的基本类型。

13、String.Format(“{0:c}”, value) c表示本地货币(x表示十六进制数;d和D对应短日期和长日期;P或Pn用于打印一个百分数,有n位小数)。

14、关键字params可以用于定义参数数组,可以使用个数不定的参数调用函数。必须是函数定义中的最后一个参数:static int SumVals(params int[] vals){ ......}

15、使用ref关键字为函数通过“引用”传递参数。使用out关键字指定输出参数。

16、重载函数:函数的签名与参数有关系,与返回值没有关系;

17、委托(delegate)是一种可以把引用存储为函数的类型。委托类型引用与定义的委托有相同返回类型和参数列表的函数。

18、当VS显示的信息遮挡代码时,可以使用Ctrl来使其透明。

19、Debug.WriteLine与Trace.WriteLine前者用于调试模式,后者用于发布程序。

20、C#结构化异常(SEH)处理try... catch ... finally: 也可以只有try块和finally块,而没有catch块,或者有一个try块和好几个catch块。如果有一个或多个catch块,finally块就是可选的,否则就是必需的。

21、在UML(Unified Modeling Language)中,方法的参数前面out和intout大致对应C#关键字out和ref;in大致对应于C#中不使用这两个关键字的情形。

22、静态成品(也称为共享成员,尤其VB用户常使用这个术语)。在UML中类的静态成员用下划线表示。成员前面的加号表示公共,减号表示私有成员。

23、在UML中,在对象上实现的接口用“棒棒糖”语法来表示。

24、抽象类在UML中以斜体显示(有时它们的方框有一个短横线)。

25、与类不同的是,接口可以继承多个基接口(与类可以支持多个接口的方式类似)。

26、可以使用internal访问修饰符显示指定当前类只有当前项目中的代码才能访问。另外,使用public 指定类是公共的,其他项目中的代码可以访问。

27、抽象类使用abstract;密封类使用sealed 关键字。如果继承了一个抽象类,必须实现所有抽象成员(除非派生类也是抽象的)。

28、编译器不允许派生类的可访问性高于基类。

29、析构函数由带有~前缀的类名(与构造函数的相同)来声明。

30、类可以实现ICloneable接口,来提供类定义中的深度复制功能。

31、.NET Framework中公共字段,方法以及属性以PascalCasing形式命名,私有字段通常使用camelCasing来命名。

32、字段使用readonly关键字,表示只能在执行构造函数的过程中或者初始化赋值语句赋值。

33、const关键字用来创建一个常量。与readonly的区别是const成员是静态的。

34、extern表示方法定义放在其他地方。就是可以项目外部提供方法的实现代码。这是一个高级论题。

35、override sealed可以指定在派生类中不能对这个方法作进一步的修改。

36、属性可以使用virtual, override, abstract 关键字。访问器可以有自己的可访问性。

37、可以使用类图添加字段,属性和方法,但此方法不能提供完整的实现代码。如果访问修饰符之类的忘却了,可以用这个方法来写代码。

38、重构:表示使用工具修改代码,而不是手工修改。

39、自动属性的唯一限制是它们必须包含get和set存取器,无法使用这种方式定义只读或只写属性。

40、当继承的公共成员不像预期的那样工作时,可以使用new关键字显式隐藏它。另外,使用override重写基类方法,基类类型(使用多态)调用也是重写后的实现代码。

41、可利用base关键字调用重写或隐藏的基类方法。

42、this关键字引用当前的对象实例;另一个用法是限定本地类型的成员。

43、要隐藏基接口的成员,可以用new来定义。

44、部分类定义使用partial关键字。

45、部分方法如果没有方法体,会被编译器删除掉。设计器会声明部分方法,由用户根据具体情形选择是否实现它。

45、使用方便的类图工具使工作更便于完成。

46、索引符(indexer)是一种特殊类型的属性,可以把它添加到一个类中,以提供类似于数组的访问。

47、迭代器,它是一个代码块,使用yield关键字选择要在foreach循环中使用的值。其语法是yield return  <value>;

48、使用yield break; 来中断信息返回foreach循环的过程。

49、取余运算用%

50、对象深复制:使用.NET Framework的标准方式,实现ICloneable接口,该接口有一个方法Clone(); 在比较复杂的对象系统中,调用Clone()是一个递归过程。

51、封箱(boxing)是把值类型转换为System.Object类型,或者转换为由值类型实现的接口类型。拆箱(unboxing)是相反的转换过程。

52、is运算符并不是说明对象是某种类型的一种方式,而是可以检查对象是否是给定类型,或者是否可以转换为给定类型,如果是,这个运算符就返回true。

53、IComparable和IComparer接口是比较对象的标准方式。差别前者在比较的类中实现,可以比较该对象和另一个对象;后者在一个单独的类中实现,可以比较任意两个对象。

54、System.Collections中的类Comparer提供了IComparer接口的默认实现方式。

55、重载转换运算符使用implicit operator或者explicit operator关键字。

56、as运算符如果转换失败,不会产生异常,而是返回null,利用这点比检查异常要简单得多!

原文地址:https://www.cnblogs.com/captionAmazing/p/14882219.html