1、变量
1.1变量类型
C#常用的数据类型包括:
整型(Integer):
一共有8个byte、sbyte、int、uint、short、ushort、long、ulong
有符号的整形变量:是能存储一定范围正负数,包括零的变量类型,sbyte、int、short、long
无符号的整形变量:是能存储一定范围正数和零的变量类型,byte、uint、ushort、ulong
浮点型(Floating-point):
用于表示带有小数部分的数值,包括float、double等。
浮点数(小数):float存储7/8位有效数字,根据编译器不同,有效数字也可能不一样,抛弃的数字会四舍五入;double存储15~ 17位有效数字,抛弃的数字会四舍五入;decimal存储27~28位有效数字。
字符型(Character):
用于表示单个字符,使用char类型。
字符串型(String):
用于表示一串字符,使用string类型。
布尔型(Boolean):
用于表示真或假,使用bool类型。
数组(Array):
用于存储多个相同类型的元素,可以使用一维数组、多维数组或者交错数组。
枚举(Enum):
用于定义一组命名的常量值,可以使用enum关键字定义。
结构体(Struct):
用于封装多个相关的数据成员,可以使用struct关键字定义。
类(Class):
用于封装数据和方法,可以使用class关键字定义。
接口(Interface):
用于定义一组方法和属性的规范,可以使用interface关键字定义。
变量的使用规则:先声明再赋值最后使用
int number;
number=10;
number=20;
Console.WriteLine(number);
1.2.变量大小
sizeof(变量类型)可以得到该变量类型所占空间大小(单位字节)
C#中char占两个字节,bool占一个字节。sizeof不能得出string类型所占空间大小。
1.3 Camel Pascal
必须遵守的规则:
不能重名、不能以数字开头、不能使用程序关键字命名、不能有特殊符号(下划线除外)
建议的命名规则:变量名要有含义,用英文(拼音)表示变量的作用。非常不建议的命名规则:用汉字命名 。
命名法则(驼峰命名法):
Camel(驼峰)
在C#中变量使用此命名方式。
首个单词的首字母小写,其余单词的首字母大写(如:myValue)。
Pascal(帕斯卡)
在C#中 方法、类、属性 使用此命名方式。
每个单词的第一个字母都大写(如:MyValue)。
如果使用到英文单词的缩写,全部使用大写(如:HP、MP)。
2、常量
静态常量/编译时常量,在编译时便用该常量的值代替常量变量。 用 const 修饰
静态常量特点:必须初始化、不能被修改
声明静态常量的语法: const 变量类型 变量名=值;
动态常量/运行时常量,在运行时返回一个运行时常量的变量引用。 用readonly 修饰
public const int a=1 ;//静态常量
public static readonly int b=13;//动态常量
Compile-time constant:
1.在编译时会用其值替换掉所有的编译时常量变量,当你更换程序集时,在引用的程序中,原来编译时常量的值不会改变。(在编译时就已经用值替换了变量)
2.用const定义的常量,对于所有类对象而言都是一样的,因此需要像访问静态成员那样去访问const定义的常量,而用对象的成员方式去访问会出变异错误。
此外,对于静态常量的访问在编译的时候,是用常量的值去替换常量,例如:
int nValue = MAX_VALUE;
这句在编译之后,和如下这句所产生的中间语言代码是一样的。
int nValue = 10;
3.在用const来定义常量的时候,在类型上有很多限制:
首先,此类型必须属于值类型,同时此类型的初始化不能通过new来完成,因此一些用struct定义的值类型常量也不能用const来定义。
Runtime constant:
1.运行时保留的是运行时变量的引用,所以会用新的值代替掉原来的值。
2.对于运行时常量,只能在初始化时赋值,或者是构造函数中复制。而不能在其他地方赋值,否则会提示错误。
3.为什么称为动态变量?
因为系统要为readonly所定义的常量分配空间,即和类的其他成员一样拥有独立的空间。
此外,readonly所定义的常量除了在定义的时候可以设定常量值外,还可以在类的构造函数中进行设定。
由于readonly所定义的常量相当于类的成员,因此使用const来定义常量所受到的类型限制,在使用readonly去定义的时候全部消失,即可以用readonly去定义任何类型的常量。