-
通常一个整数默认存储的是整数型int,即32位,如果想特殊指明,要显示指定。 比如 uint i =1234U ; long i=1234L; ulong i = 1234UL;否则编译器会默认1234属于int。
-
通常一个小数默认存储的是浮点型double,即64位双精度,如果想特殊指明,要显示指定。 比如 folat f =1234.567F; float型是32位。
-
c# 7 提供了二进制值字面量表示, 以0b开头,byte b=0b1111_1110
-
在c或者c++中,预处理指令非常重要,c#也提供了一些预处理指令,它们的使用不太频繁,因为c#提供了其他机制来实现许多c++指令的功能,如定制特性。还要注意,并没有一个像c++那样的预处理器,所谓的预处理器实际是由c#编译器处理的。
-
较小的数据类型使用结构可以提高性能、结构的另一个优点与本机代码互操作、结构体的布局可以与本机数据类型相同。但除非特殊说明,用于类的代码也适用于结构。
-
readonly只读的修饰符,只能在构造函数中分配值。它与const不同,后者是编译期用常量替换变量,而readonly是运行期构造函数指定。另外const属于类,默认是静态的,readonly既可以是静态的,也可以是实例的。如果是静态的,就要在静态构造函数中分配值,如果是实例的,就在实例构造函数中分配值。
-
属性是字段的改进、为了区分,微软约定用下划线作为字段的前缀。如果属性不含任何逻辑,可以使用自动属性,如果包含逻辑,那只能使用传统属性,即包括私有字段和公有属性。同时,属性也可以有访问修饰符public或者private,这有助于控制属性的设置方式。只读属性可以使用属性初始化器,也可以显式的在构造函数中初始化。
-
可见c#至少提供了3种方式来表达只读,const、readonly、只读属性,注意它们的区别。严格说还有枚举,因为枚举是常量的集合。
-
方法重载看的是签名,即方法名相同,但参数的个数或者数据类型不同,不看返回值。
10.方法返回一个值很简单,如果方法要返回多个值。有3种方法,一种是声明复杂的数据,比如数组、结构或者类,把应该返回的所有信息都定义成成员; 第二种是使用元祖类型;第三种是使用out关键字。