数据类型是C#编程的基础,了解和掌握C#中的各种数据类型有助于更好地管理和操作数据。C#是一种强类型语言,这意味着在使用变量之前必须声明它们的类型。在本章中,我们将详细介绍C#中的各种数据类型,包括值类型和引用类型,以及如何在不同类型之间进行转换。
1. 值类型(Value Types)
值类型直接包含它们的数据。分配值类型变量时,实际的数据存储在变量分配的内存位置。C#中的值类型包括简单类型、结构体和枚举。
简单类型:
C# 提供了一些预定义的简单值类型,如整数类型、浮点类型、字符类型和布尔类型等。这些类型都派生自System.ValueType
。
整数类型:
byte a = 255; // 8位无符号整数,范围 0 到 255
sbyte b = -128; // 8位有符号整数,范围 -128 到 127
short c = -32768; // 16位有符号整数,范围 -32768 到 32767
ushort d = 65535; // 16位无符号整数,范围 0 到 65535
int e = -2147483648; // 32位有符号整数,范围 -2147483648 到 2147483647
uint f = 4294967295; // 32位无符号整数,范围 0 到 4294967295
long g = -9223372036854775808; // 64位有符号整数,范围 -9223372036854775808 到 9223372036854775807
ulong h = 18446744073709551615; // 64位无符号整数,范围 0 到 18446744073709551615
浮点类型:
float i = 3.14f; // 32位单精度浮点数
double j = 3.14; // 64位双精度浮点数
decimal k = 3.14m; // 128位高精度十进制数,通常用于金融和货币计算
字符类型:
char l = 'A'; // 16位Unicode字符
布尔类型:
bool m = true; // 布尔值,true 或 false
结构体(Structs):
结构体是值类型,用于封装一组相关的变量。这些变量可以是不同的数据类型。结构体通常用于表示小型数据结构。
示例:
struct Point
{
public int X;
public int Y;
}
Point p;
p.X = 10;
p.Y = 20;
Console.WriteLine($"Point: ({
p.X}, {
p.Y})");
枚举(Enums):
枚举是一种特殊的值类型,定义一组命名的整型常量。枚举类型用于表示具有一组离散值的变量。
示例:
enum Days {
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
Days today = Days.Wednesday;
Console.WriteLine($"Today is: {
today}");
2. 引用类型(Reference Types)
引用类型存储的是对象的引用,而不是对象的实际数据。分配引用类型变量时,变量存储的是数据的内存地址。C#中的引用类型包括类、接口、数组和字符串等。
类(Class):
类是创建对象的模板,定义了对象的属性和行为。类是引用类型。
示例:
class Person
{
public string Name;
public int Age;
public void Introduce()
{
Console.WriteLine($"Hello, my name is {
Name} and I am {
Age} years old.");
}
}
Person person = new Person();
person.Name = "Alice";
person.Age = 30;
person.Introduce();
接口(Interface):
接口定义了一组方法和属性的规范,但不提供具体实现。类或结构体可以实现一个或多个接口。
示例:
interface IAnimal
{
void MakeSound();
}
class Dog : IAnimal
{
public void MakeSound()
{
Console.WriteLine("Woof!");
}
}
IAnimal myDog