C#入门经典(第7版):C# 6.0 & Visual Studio 2015(.NET开发经典名著)
上QQ阅读APP看书,第一时间看更新

6.4 结构函数

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

        struct CustomerName
        {
          public string firstName, lastName;
        }

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

        CustomerName myCustomer;
        myCustomer.firstName = "John";
        myCustomer.lastName = "Franklin";
        WriteLine($"{myCustomer.firstName} {myCustomer.lastName}");

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

        struct CustomerName
        {
          public string firstName, lastName;
          public string Name() => firstName + " " + lastName;
        }

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

        CustomerName myCustomer;
        myCustomer.firstName = "John";
        myCustomer.lastName = "Franklin";
        WriteLine(myCustomer.Name());

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