结构类型
结构类型适用于早应用程序中对数学、几何以及“原子”实体模型。结构是用户自定义的类型,然而,结构不只是一组名称值对。结构可以包含许多数据字段和操作这些字段的成员类型。定义和使用结构的过程很简单,但是其中的一些细节很重要。在对数据结构进行分析的同时。我们要先建立一个名为FunWithStructures的项目。在C#中,使用struct关键字来创建结构。定义一个新的Point,它定义了两个int类型的成员变量。下面是实现的代码:
struct Point {
//结构的字段
public int X;
public int Y;
//将(X,Y)坐标增加1
public void Increment() {
X++;Y++;
}
//将(X,Y)坐标减去1
public void Decrement(){
X--;Y--;
}
//显示当前坐标
public void Display() {
Console.WriteLine("X={0},Y={1}", X, Y);
}
}
在这里使用public关键字定义两个整形数据类型(X和Y),这个关键字是访问控制修饰符。使用public关键字来声明数据可以确保调用能直接获取某个Point变量的数据。用Main()方法测试一下Point类型:
static void Main(string[] agrs) {
Console.WriteLine("sdfdsfdrfse");
//创建初始Point
Point myPoint;
myPoint.X = 349;
myPoint.Y = 46;
myPoint.Display();
//调整X和Y值
myPoint.Increment();
myPoint.Display();
Console.ReadLine();
}
创建结构变量
创建结构变量的方式有好几种。在这里,我们没有必要创建太多,我们只是创建了一个Point变量,并在调用其成员之前为每一个公共字段数据赋值。如果在使用结构之前不为每一个公共字段数据赋值,则会收到一个编译错误:
//错误!没有为Y赋值
Point p1;
p1.X = 10;
p1.Display();
//正确!在使用前两个字段都赋值了
Point p2;
p2.X = 10;
p2.Y = 10;
p2.Display();
另外一种可行的方法是,使用C#的new关键字来创建结构变量,它会调用结构默认的构造函数。根据定义,默认的构造函数不接受任何输入参数。调用结构默认构造函数的好处是,每一个字段数据都会被自动设置为默认值:
//使用默认构造函数将所有字段设置为默认值
Point p1 = new Point();
//输出X=0,Y=0
p1.Display();
还可以使用自定义构造函数设计结构。它允许我们在创建变量时指定字段数据的值,而不是逐个字段设置数据成员。为了实现这个结果,下面我们更新一下Point的结构;
struct Point {
//结构的字段
public int X;
public int Y;
//自定义的构造函数
public Point(int XPos,int Ypos) {
X = XPos;
Y = Ypos;
}
}
这样,我们就可以创建Point变量了:
//调用自己的构造函数
Point P2 = new Point(50, 60);
//输出X=50,Y=60
p2.display();