结构函数
第 5 章介绍了结构类型,它可在一个地方存储多个数据元素,但实际上结构可以做的工作远不止这一点。例如,除了数据,结构还可以包含函数。这初看起来很奇怪,但实际上是非常有用的。
例如,考虑以下结构:
struct CustomerName
{
public string firstName, lastName;
}
如果变量的类型是 CustomerName
,并且要在控制台上输出一个完整的姓名,就必须使用姓、名构成该姓名。例如,对于 CustomerName
变量 myCustomer
,可以使用下述语法:
CustomerName myCustomer;
myCustomer.firstName = "John";
myCustomer.lastName = "Franklin";
Console.WriteLine("{0} {1}", myCustomer.firstName, myCustomer.lastName);
把函数添加到结构中,就可以集中处理常见任务,从而简化这个过程。可以把合适的函数添加到结构类型中,如下所示:
struct CustomerName
{
public string firstName, lastName;
public string Name()
{
return firstName + " " + lastName;
}
}
看起来这与本章前面的其他函数很类似,只不过没有使用 static
修饰符。本书后面将阐明其原因,现在知道该关键字不是结构函数所必需的即可。这个函数的用法如下所示:
CustomerName myCustomer;
myCustomer.firstName = "John";
myCustomer.lastName = "Franklin";
Console.WriteLine(myCustomer.Name());
这个语法比前面的语法简单很多,也更容易理解。注意 ⚠️,Name()
函数可以直接访问 firstName
和 lastName
结构成员,在 customerName
结构中,它们可以被看作是全局成员。