结构函数

  第 5 章介绍了结构类型,它可在一个地方存储多个数据元素,但实际上结构可以做的工作远不止这一点。例如,除了数据,结构还可以包含函数。这初看起来很奇怪,但实际上是非常有用的。

例如,考虑以下结构:

  1. struct CustomerName
  2. {
  3. public string firstName, lastName;
  4. }

  如果变量的类型是 CustomerName,并且要在控制台上输出一个完整的姓名,就必须使用姓、名构成该姓名。例如,对于 CustomerName 变量 myCustomer,可以使用下述语法:

  1. CustomerName myCustomer;
  2. myCustomer.firstName = "John";
  3. myCustomer.lastName = "Franklin";
  4. Console.WriteLine("{0} {1}", myCustomer.firstName, myCustomer.lastName);

  把函数添加到结构中,就可以集中处理常见任务,从而简化这个过程。可以把合适的函数添加到结构类型中,如下所示:

  1. struct CustomerName
  2. {
  3. public string firstName, lastName;
  4. public string Name()
  5. {
  6. return firstName + " " + lastName;
  7. }
  8. }

  看起来这与本章前面的其他函数很类似,只不过没有使用 static 修饰符。本书后面将阐明其原因,现在知道该关键字不是结构函数所必需的即可。这个函数的用法如下所示:

  1. CustomerName myCustomer;
  2. myCustomer.firstName = "John";
  3. myCustomer.lastName = "Franklin";
  4. Console.WriteLine(myCustomer.Name());

  这个语法比前面的语法简单很多,也更容易理解。注意 ⚠️,Name() 函数可以直接访问 firstNamelastName 结构成员,在 customerName 结构中,它们可以被看作是全局成员。