C# 结构(Struct)
C# 中的结构体 (Struct) 是一种用户定义的值类型。与类 (Class) 不同,结构体是一种轻量级的类型,适用于小型数据结构。结构体可以包含数据成员和方法成员。
# 结构体的定义
结构体的定义使用 struct
关键字,结构体名称遵循 Pascal 命名法,并且应该以大写字母开头。以下是结构体的一般语法:
struct StructName
{
// 数据成员和方法成员
}
下面是一个简单的结构体定义的示例:
struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
在这个示例中,我们定义了一个 Point
结构体,它包含了两个整型的数据成员 X
和 Y
,以及一个构造函数用于初始化这两个数据成员。
# 结构体的实例化
结构体是一种值类型,所以在声明结构体变量时,它会被分配在栈上而不是堆上。可以使用 new
运算符来实例化结构体对象,也可以使用默认构造函数来初始化结构体对象。
Point p1 = new Point(10, 20);
Point p2 = default(Point); // 使用默认构造函数初始化
# 结构体的使用
结构体可以像类一样使用。可以访问结构体的数据成员和方法成员。
Console.WriteLine("p1.X = {0}, p1.Y = {1}", p1.X, p1.Y);
p1.X = 100;
Console.WriteLine("p1.X = {0}, p1.Y = {1}", p1.X, p1.Y);
# 结构体的比较
结构体可以使用比较运算符进行比较。在默认情况下,结构体的比较是按值进行的,即比较结构体的每个数据成员。
Point p3 = new Point(10, 20);
if (p1 == p3)
{
Console.WriteLine("p1 and p3 are equal.");
}
else
{
Console.WriteLine("p1 and p3 are not equal.");
}
# 总结
结构体是一种轻量级的值类型,适用于小型数据结构。与类不同,结构体是一种值类型,分配在栈上而不是堆上。结构体可以包含数据成员和方法成员,并且可以使用比较运算符进行比较。
# 示例代码
以下是一个完整的示例程序,用于演示结构体的使用:
using System;
struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
class Program
{
static void Main(string[] args)
{
Point p1 = Point(10, 20);
Point p2 = default(Point);
Console.WriteLine("p1.X = {0}, p1.Y = {1}", p1.X, p1.Y);
Console.WriteLine("p2.X = {0}, p2.Y = {1}", p2.X, p2.Y);
p1.X = 100;
Console.WriteLine("p1.X = {0}, p1.Y = {1}", p1.X, p1.Y);
Point p3 = new Point(10, 20);
if (p1 == p3)
{
Console.WriteLine("p1 and p3 are equal.");
}
else
{
Console.WriteLine("p1 and p3 are not equal.");
}
}
}
输出:
p1.X = 10, p1.Y = 20
p2.X = 0, p2.Y = 0
p1.X = 100, p1.Y = 20
p1 and p3 are equal.
上次更新: 2023/04/26, 22:10:06