结构函数

  第 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() 函数可以直接访问 firstNamelastName 结构成员,在 customerName 结构中,它们可以被看作是全局成员。

🔚