一.类型

在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);