C#基础与进阶01:部分类型与类型转换

本文介绍了C#中的基本类型系统,包括值类型和引用类型,详细讲解了结构体的定义、特性和使用场景。此外,还讨论了浮点型数值的精度问题以及不同类型的转换方法,如显示转换、TryParse、Parse和Convert方法。最后,提到了对象转换和特定数据类型的转换示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.类型

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值