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 循环对数组内容进行只读访问,所以不能改变任何元素的值