复杂的变量类型---枚举,结构,数组

 1. 枚举(允许定义一个类型,提取我们提供的限定值集合中的一个值)

             如:    orientation类型可以存储north, south, east  或 west 中的一个值.此时就可以使用枚举类型,创建自己的枚举类型orientation, 他可以从上述四个值中提取一个值. 注意这是一个附加的步骤----不是只声明一个给定类型的变量,而是声明和描述一个类型定义的类型,再声明这个新类型的变量.

         枚举使用一个基本类型来存储.枚举类型可以提取的每个值都存储为该类型的一个值,在默认情况下,该类型为int.

在默认声明中添加类型,就可以指定其他基本类型:

           enum typeName : underlyingType

            {   

                  value1,

                 value2,

                。。。

                valueN

             }

枚举的基本类型可以是byte, sbyte, short, ushort, int , uint, long和 ulong .

在默认情况下,每个值都会根据定义的顺序(从0开始),自动赋值对应的基本类型。可以重写这个赋值过程:用=

运算符,并指定每个枚举的实际值。另外,还可以用一个值作为另一个枚举的基础值,为多个枚举指定相同的值。

范例:

using System;


namespace ConsoleApplication9
{
    enum orientation : byte
    {
        north = 1,
        south = 2,
        west = 3,
        east = 4
    }
    class Program
    {
        static void Main(string[] args)
        {
            orientation myDirection = orientation.north;
            Console.WriteLine("myDirection = {0}",myDirection );
            string directionString;
            byte directionByte;
            directionByte = (byte)myDirection;   //显式转换
            directionString = Convert.ToString (myDirection);     //不能使用string数据类型转换。
            Console.WriteLine("byte equivalent = {0}",directionByte);
            Console.WriteLine("string equivalent = {0}",directionString );
        }
    }
}

2.  结构

结构是由几个数据组成的数据结构.这些数据可能有不同的类型.

定义结构: 使用struct关键字定义

struct

{ menberDeclarations }

using System;


namespace ConsoleApplication10
{
    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 ;
            double myDistance;
            Console.WriteLine("1)North/n2)South/n3)East/n4)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 );

         }
    }
}

3,数组

范例1 :

using System;


namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] friendName = { "TengfeiQi","XuyangQu","KaibinWang"};
            int i;
            Console.WriteLine("Here are {0} of myfriends:",friendName.Length );
            for (i = 0; i < friendName.Length; i++)
            { Console.WriteLine(friendName [i]); }
        }
    }
}

范例2:
using System;


namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] friendNames = { "KaibinWang","XuyangQu","TengfeiQi",};
            Console.WriteLine("Here are {0} of my friends",friendNames.Length  );
            foreach (string friendName in friendNames )
            {
                Console.WriteLine(friendName );
            }
        }
    }
}
// foreach 循环对数组内容进行只读访问,所以不能改变任何元素的值

 


 

          

 

 

  

 

你可能感兴趣的:(C#)