一、基础知识:
- 常用的数据类型:int,short,char等,注意:可空数据类型
a) 整数类型
1) 有符号整数:sbyte,short,int,long
l sbyte 占有1个字节(8个二进制位),取值范围:-128 ~127
l short 占有2个字节(16个二进制位),取值范围:-32768 ~32767
l int占有4个字节(32个二进制位),取值范围:-2147483648 ~2147483647 如:int age = 13;
l long占有8个字节(64个二进制位),取值范围:9,223,372,036,854,775,808~9,223,372,036,854,775,807
例:long num = 31413L
2) 无符号整数:byte,ushort,uint,ulong
l byte占有1个字节(8个二进制位),取值范围:0 ~255
l ushort占有2个字节(16个二进制位),取值范围:0~65535
l uint占有4个字节(32个二进制位),取值范围:0~4294967295
l ulong占有8个字节(64个二进制位),取值范围:0~18,446,744,073,709,551,615如:ulong num = 3414324UL
b) 浮点数(有小数点)
1) 单精度:float,有效位:小数点后的7位。如 float price = 3.0987392F
2) 双精度:double有效位:小数点后的15位。
3) 如 double price = 3.0987392222D
4) decimal 有效位:小数点后的28位。如 decimal price = 3.0987392222M
备注:decimal对应着数据库的money数据类型。
5) 科学计数法表示数值:double d=2.5e-6 ;表示d=2.5* 。
c) 布尔数据类型:bool
只有true和false
d) 字符类型
1) 单个字符(单引号):char占有2个字节(16个二进制位) 如:char c = ‘a’;
2) 字符串(双引号):string 如:string name = “张三”;
注:如果一个字符串时double的小数,不能直接强制转化为int类型,需要先转为double类型在转化int类型。例:
string a=”3.8”;
int b=(int)Convert.ToDouble(a);
字符串留用问题:
因为字符串是不可变的对象,如果多个字符串便令引用多个内容相同的字符串,这样就会浪费资源;如果在托管堆只保留一个字符串对象,这样会更加有效的利用内存。字符串留用的原理就是这样的,所以相同的字符串只有一个字符串实例,如string P_str=”abc”和string p_str2=”abc” 两个字符串变量引用的是一个字符串对象。
e) 对象数据类型:是所有数据类型最终的基类
只有object 如:object obj = “123”;
f) 可空数据类型:? 如:int? age = null;
备注:把大的数据类型的变量赋值给小的数据类型变量,须强制转换。如下:
int b = 10;
byte c = (byte)b;// 强制转换
注:整数在计算机中默认是int类型,小数默认是double类型。如果和小的数据类型做运算时也需要强转:
例: byte b=4; byte b1=3; byte b2=7;
b= b1+3; //出现错误提示:无法将类型int因式转换为‘’byte“,存在显示转换。
纠正:b=(byte)(b1+3);
另外,如果两个byte类型的数据做运算时也需要强转。
例:b=b1+b2; //无法将int因式转换为”byte“,存在一个显示转换,两个byte类型的变量相加是,自动转化为int ,防止超出范围。
- 变量的定义:根据定义的位置不同:
a) 字段:定义在类的里面,方法的外边的变量
b) 局部变量:定义在方法的里边的变量
Class Program {
//字段
Static Void Main()
{//局部变量}
c) 变量的命名规则:第一个位置必须是字母或下划线或@,但只能包括字母,数字,下划线。
d) 格式:数据类型 变量名字(注意:如果是字段的话,需要前边加上[访问修饰符]:[访问修饰符] 数据类型 变量名字)
- 5个访问修饰符:private,protected,internal,protected internal,public。
a) 私有的(private):修饰的变量只能在当前类中访问,而其他类中不能访问。
b) 受保护的(protected):修饰的变量只能在当前类中访问,或当前类的子类(派生类)中访问。
c) internal:修饰的变量只能在当前程序集(项目)中所有类访问。
d) protected internal:修饰的变量只能在当前类中访问,或当前类的子类(派生类)中访问,在当前程序集(项目)中所有类访问。
e) 公共的(public):修饰的变量在任何类中都可以被访问。
- 常量,只读字段。
常量:在运行过程中,不能修改常量所保存的值。关键字:const,定义的时候必须初始化(给变量赋值)定义格式:字段常量和局部常量。定义常量用public
字段常量:[访问修饰符] const 数据类型 常量的名字=初始值 如:public const string sex = “男”;
局部常量:const 数据类型 常量的名字=初始值。如:const string sex = “男”;
注意:Const 不能与Static同时使用,因为Construction默认是静态的。
只读字段:在运行过程中,不能修改常量所保存的值,但唯一可以修改该变量的值是在类的构造函数中。关键字:readonly
一般情况下只有只读字段如:private readonly string connStr = “data source=.”
Const与readonly区别:1. const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
4.const 对于引用类型的常数,可能的值只能是 string 和 null。readonly可以是任何类型
总结:const只能在初期就使用常量初始化好。对于每一次编译后的结果,const的值是固定的,而readonly的值是可以在运行的时候才确定值的~~