C#学习笔记,隐式和显式转化、枚举类型、结构类型、数组类型和字符串

1 类型转换

1.1 隐式转换:从类型A到类型B的转换可以在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换。

ushort destinationVar;

char sourceVar = 'a';

destinationVar = sourceVar;

Console.WirteLine("soueceVar Val:{0}",sourceVar);

Console.wirteLine("destination Val:{0}",destinationVar);

输出的结果:

sourceVar Val:a

destination Val:97

即时两个变量存储的是相同的信息,但是不同的类型解释他们时,方式也是不同的。

编译器允许隐式转换的数值转换如下表:

类型可以安全的转换为
byteshort,ushort,int,uint,long,ulong,double,decimal
sbyteshort,int,long,float,double,decimal
shortint,long,float,double,decimal
ushortint,uint,long,ulong,float,double,decimal
intlong,float,double,decimal
uintlong,ulong.float,double,decimal
longfloat,double,decimal
ulongfloat,double,decimal
floatdouble
charushort,int,uint,long,ulong,float,double,decimal

1.2 显式转换:从类型A到类型B的转换只能在某些情况下进行,转换的规则比较复杂,应进行某种类型的处理。

byte destinationVar;

short sourceVar = 7;

destinationVar = (byte)sourceVar;

1.2.1 使用Convert命令进行显式转换

命令结果
Convert.ToBoolean(val)val转换为bool
Convert.ToByte(val)val转换为byte
Convert.ToChar(val)val转换为char
Convert.ToDecimal(val)val转换为decimal
Convert.ToDouble(val)val转换为double
Convert.ToInt16(val)val转换为short
Convert.ToInt32(val)val转换为int
Convert.ToInt64(val)val转换为long
Convert.ToSByte(val)val转换为sbyte
Convert.ToSingle(val)val转换为float
Convert.ToString(val)val转换为string
Convert.ToUInt16(val)val转换为ushort
Convert.ToUInt32(val)val转换为uint
Convert.ToUInt64(val)val转换为ulong

2 枚举类型

关键字enmu

enmu<typeName>

{

  <value1>,

  <value2>,

  <value3>,

  ...

  <valueN>

}

接着声明这个新类型

<typeName><varName>;

并赋值:

<varName>=<typeName><value>;

注:默认情况下枚举中的第一个变量赋值为1,后面的值自动加1

3 结构类型

关键字struct

struct <typeName>

{

  <memberDeclarations>

}

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

<accessibility><type><name>;

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

struct route

{

  public orientation direction;

  public double distance;

}

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

route myRoute;

然后通过句点字符来访问这个组合变量中数据成员:

myRoute.direction = orientation.north;

myRoute.distance = 10;

4 数组

前面的所有类型都有一个共同点:他们都只能存储一个值(结构中存储一组值)。有时,需要存储许多数据,这样就会带来不便。有时需要同时存储几个类型相同的值,而不是每一个值使用不同的变量。

4.1 声明数组:

<baseType>[]<name>;

例如:int[] myIntArray;

myIntArray[10] = 5;

或者:int[] myIntArray = new int[]arraySize;

或者:int[] myIntArray = new int[5]{1,2,3,4,5};数组大小必须和元素个数匹配

4.2 foreach循环

foreach循环可以使用一种简单的语法来定位数组中的每一个元素:

foreach(<baseType>(name) in <array>)

{

  //can usr <name> for each element

}

4.3 多维数组

二维数组声明

<baseType>[,] <name>;

多维数组声明

<baseType>[,,,] <name>;

5 字符串的处理

string类型变量可以看成是char变量的只读数组。这样就可以使用下面的语法访问每一个字符:

string myString = "A string";

char myChar = myString[1];

在foreach循环中使用字符串:

foreach(char character in mystring)

{

  Console.WirteLine("{0}",character);

}