一.类型
在C#中常用的类型主要有值类型和引用类型。
值类型:变量直接保存其数据。
引用类型:变量保存其数据的引用(地址),而不是具体的数据。
注:值类型具体类型和引用类型具体类型这里不再阐述!!!
二.结构体介绍
定义:
public struct 标识符
{
public 数据类型 变量名;
public 数据类型 变量名;
}
和类的异同:
同:有成员变量,有方法,有构造方法
异:
1.结构体是值类型数据,类是引用类型数据
2.结构体只可以定义有参构造函数,而且在函数里必须对成员变量赋值。
3.结构体可以直接赋值使用,也可以通过new 关键字来使用,类只能通过new 关键字来使用。
4.结构体可以用属性,但是属性和构造函数不能同时存在。 结构体的属性不能赋予初始值。
5.结构体不能继承。
结构体适用的场合:
一般不会在结构体中写属性和构造方法,结构体因为是值类型在栈中,栈的访问速度比堆空间反应要快,但是容量小。适合轻量级的数据,用来传值是比较好。需要描述大量字段,又比较抽象,需要继承,就是用类最好。
三.浮点型注意点
浮点型直接赋值可以相等,但是经过运算后就不能相等了。运算后的浮点型有个精度的判断标准。
比如:
Float a = 1.0, b = 1.0;
这种情况下a和b是相等的,如果a或者b经过运算之后得到的,就不能用等式来衡量。
四.显示转换
例子:
Long number1 = 555;
Int number2 = (int)number1;
这里由表示范围大的类型向表示范围小的类型转换,一定要用显示转换,否则会发生编译错误。
五.强制转换
方法:TryParse()
语法:类型.TryParse(待转换参数,输出参数)
注意:TryParse和Parse都是一个用法,TryParse效率更高,且不会触发异常,返回类型是bool型,转换后的数据放在输出参数里面
string ss = “123”;
int m;
bool k = int.TryParse(ss, out m);
方法:parse()
语法: 类型.parse(待转换参数);
例子:
Str = “123”;
Int temp = int.parse(str);
方法:Convert
语法:Convert.类型(参数)
String str = “123”;
Int a = Convert.ToInt32(str);
Bool b = Convert.ToBoolean(999.999);
byte数组转换成uint:
byte aa = 0x00;
byte bb = 0xf;
byte cc = 0x1;
byte dd = 0x00;
byte[] bytes = new byte[]{ aa,bb,cc,dd };
uint num = BitConverter.ToUInt32(bytes, 0);
字符串转16进制:
Convert.ToUInt32(sendOpenDevice.Key1, 16);
as:
as用于对象之间的转换,且不产生额外的对象,如果不成功则返回null。
Object obj1 = new NewType();
NewTYpe newValue = obj1 as NewType;
UInt32转byte数组:
sendBytes[3] = (byte)(testData[i] & (0xff));
sendBytes[2] = (byte)((testData[i] >> 8) & (0xff));
sendBytes[1] = (byte)((testData[i] >> 16) & (0xff));
sendBytes[0] = (byte)((testData[i] >> 24) & (0xff));
字符串分离后转数组:
string str = “1,2,3,4,5,6,7,8,9”;
int[] arr = Array.ConvertAll(str.Split(‘,’), int.Parse);