跳到主要内容

C# 数据类型

介绍

在 C# 编程中,数据类型是定义变量可以存储的数据种类的基础。C# 提供了多种数据类型,这些类型可以分为两大类:值类型引用类型。理解这些数据类型是编写高效、可维护代码的关键。

值类型

值类型直接包含它们的数据。每个值类型的变量都有自己的数据副本,因此对一个变量的操作不会影响另一个变量。C# 中的值类型包括:

  • 整数类型:如 intshortlong 等。
  • 浮点类型:如 floatdouble 等。
  • 布尔类型bool
  • 字符类型char
  • 结构体struct

示例:整数类型

csharp
int a = 10;
int b = a;
b = 20;

Console.WriteLine(a); // 输出: 10
Console.WriteLine(b); // 输出: 20

在这个例子中,ab 是两个独立的变量,修改 b 不会影响 a 的值。

引用类型

引用类型存储的是对数据的引用(即内存地址),而不是数据本身。多个变量可以引用同一个对象,因此对一个变量的操作可能会影响另一个变量。C# 中的引用类型包括:

  • class
  • 数组
  • 字符串string
  • 接口interface
  • 委托delegate

示例:字符串类型

csharp
string str1 = "Hello";
string str2 = str1;
str2 = "World";

Console.WriteLine(str1); // 输出: Hello
Console.WriteLine(str2); // 输出: World

在这个例子中,str1str2 最初引用同一个字符串对象,但修改 str2 不会影响 str1,因为字符串是不可变的。

实际应用场景

场景 1:使用值类型进行数学计算

csharp
int x = 5;
int y = 10;
int sum = x + y;

Console.WriteLine(sum); // 输出: 15

在这个场景中,我们使用 int 类型来存储整数并进行加法运算。

场景 2:使用引用类型管理对象

csharp
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = person1;
person2.Name = "Bob";

Console.WriteLine(person1.Name); // 输出: Bob
Console.WriteLine(person2.Name); // 输出: Bob

在这个场景中,person1person2 引用同一个 Person 对象,因此修改 person2 的属性会影响 person1

总结

C# 中的数据类型分为值类型和引用类型。值类型直接存储数据,而引用类型存储对数据的引用。理解这两种类型的区别对于编写高效、可维护的代码至关重要。

附加资源

练习

  1. 创建一个 struct 类型的 Point,包含 XY 两个属性,并编写代码测试其行为。
  2. 创建一个 class 类型的 Student,包含 NameAge 两个属性,并编写代码测试其行为。
提示

在编写代码时,尽量使用合适的数据类型来优化性能和内存使用。