C#数据类型重点知识
·
C# 值类型(Value Types)
值类型直接存储数据,分配在栈内存中,效率较高。
- 整数类型:
byte(0-255)、sbyte(-128-127)、short(-32,768-32,767)、ushort(0-65,535)、int(-2.1亿-2.1亿)、uint(0-42亿)、long(-9e18-9e18)、ulong(0-18e18)。 - 浮点类型:
float(7位精度,后缀f)、double(15-16位精度,默认小数类型)、decimal(28-29位精度,适用于财务计算,后缀m)。 - 其他:
char(Unicode字符)、bool(true/false)、struct(自定义值类型)。
示例代码:
int num = 42;
decimal price = 19.99m;
char letter = 'A';
C# 引用类型(Reference Types)
引用类型存储数据的地址,数据本身在堆内存中,通过垃圾回收机制管理。
- 常见类型:
class、interface、string、object、dynamic、数组。 - 字符串:
string为不可变类型,修改时会创建新对象。 - 动态类型:
dynamic在编译时跳过类型检查,运行时解析。
示例代码:
string name = "Alice";
int[] numbers = { 1, 2, 3 };
dynamic obj = new ExpandoObject();
类型转换(Type Conversion)
- 隐式转换:小范围类型自动转大范围类型(如
int转long)。 - 显式转换:通过强制类型转换或
Convert类(可能引发异常)。 - 方法支持:
Parse()、TryParse()用于字符串转其他类型。
示例代码:
double d = 3.14;
int i = (int)d; // 显式转换,结果为3
string input = "123";
bool success = int.TryParse(input, out int result); // 安全转换
可空类型(Nullable Types)
值类型可通过?修饰符允许null值,常用于数据库交互或可选参数。
示例代码:
int? nullableInt = null;
if (nullableInt.HasValue)
{
Console.WriteLine(nullableInt.Value);
}
装箱与拆箱(Boxing & Unboxing)
- 装箱:值类型转为
object引用类型,存在性能开销。 - 拆箱:将
object转回值类型,需显式指定类型。
示例代码:
int value = 42;
object boxed = value; // 装箱
int unboxed = (int)boxed; // 拆箱
类型推断与var关键字
var:编译器根据赋值推断类型,仅用于局部变量。- 限制:无法用于字段或返回值类型声明。
示例代码:
var list = new List<int>(); // 推断为List<int>
var count = 10; // 推断为int
常用类型操作
sizeof():获取值类型内存大小(如sizeof(int)返回4)。typeof():获取类型的System.Type对象(如typeof(string))。is与as:类型检查与安全转换。
示例代码:
if (obj is string)
{
string s = obj as string;
Console.WriteLine(s.ToUpper());
}
更多推荐


所有评论(0)