(原创)c#学习笔记05--变量的更多内容02--复杂的类型变量02--结构

5.2.2  结构

  结构就是由几个数据组成的数据结构,这些数据可能具有不同的类型。根据这个结构,可以定义自己的变量类型。例如,假定要存储从起点开始到某一位置的路径,其中路径由一个方向和一个距离值(英里)组成。为简单起见,假定该方向是指南针上的一点(这样,方向就可以用上一节的orientation枚举来表示),距离值可以用一个double类型来表示。

  通过前面的代码,可以用两个不同的变量来表示该路径:

 orientation myDirection; 
 double       myDistance; 

  像这样使用两个变量,是没有错误的,但在一个地方存储这些信息应该更为简单(特别是在需要多个路径时,就更为简单)。

  使用struct关键字来定义结构,如下所示:

struct <typeName> 
      { 
          <memberDeclarations> 
      }

  <memberDeclarations>部分包含变量的声明(称为结构的数据成员),其格式与往常一样。每个成员的声明都采用如下形式:

<accessibility> <type> <name>;

  要让调用结构的代码访问该结构的数据成员,可以对<accessibility>使用关键字public,例如:

    struct route 
      { 
          public orientation direction; 
          public double       distance; 
      }

  定义了结构类型后,就可以定义新类型的变量,来使用该结构:

route myRoute;

  还可以通过句点字符访问这个组合变量中的数据成员:

myRoute.direction = orientation.north; 
myRoute.distance = 2.5;

  我们看下示例,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ch05Ex03
{
    enum orientation : byte
    {
        north = 1,
        south = 2,
        east = 3,
        west = 4
    }

    struct route
    {
        public orientation direction;
        public double distance;
    }

    class Program
    {
        static void Main(string[] args)
        {
            route myRoute;
            int myDirection = -1;
            double myDistance;
            Console.WriteLine("1) North
2) South
3) East
4) West");
            do
            {
                Console.WriteLine("Select a direction:");
                myDirection = Convert.ToInt32(Console.ReadLine());
            } while ((myDirection < 1) || (myDirection > 4));
            Console.WriteLine("Input a distance:");
            myDistance = Convert.ToDouble(Console.ReadLine());
            myRoute.direction = (orientation)myDirection;
            myRoute.distance = myDistance;
            Console.WriteLine("myRoute specifies a direction of {0} and a distance of {1}", myRoute.direction, myRoute.distance);
            Console.ReadKey();
        }
    }
}

  运行结果如下:

  

原文地址:https://www.cnblogs.com/wodehao0808/p/4911017.html