变量类型和c/c++类似,bool和string没有隐式的类型转换,小取值范围的变量可以 安全地 向大取值范围的变量转换,大类型可以向小类型转换,但必须使用显示的转换,显示的类型转换像是告诉编译器“我将对这个行为会带来的问题负责”。
如下代码我们将尝试将short型的287转为byte型
<span style="font-size:14px;"><span> </span>short s = 287;
byte b;
b = (byte)s;</span>
结果b的值为31,可以用check(expression)来检查表达式是否有溢出,也可以改变设置,检查每个表达式,在不需要检查的表达式处用uncheck()关键字。更多的情况下我们使用Convert来进行显示的类型转换
枚举类型enum
直接贴代码
<span style="font-size:14px;">enum enumTest
{
test1,
test2,
test3,
test4
}
static void Main(string[] args)
{
enumTest tester;
tester = enumTest.test1;
Console.WriteLine("{0}",tester);
Console.ReadKey();
}</span>
enum不能再函数内部声明,enum会存储在基本类型中(byte,sbyte,short,ushort,int,uint,long,ulong),用显示的类型转换可以将其在二者之间转换。另外enum是值类型的。
见代码
<span style="font-size:14px;">enum enumTest
{
test1,
test2,
test3,
test4
}
static void Main(string[] args)
{
Program t = new Program();
enumTest tester1, tester2;
tester1 = enumTest.test1;
tester2 = enumTest.test3;
int i;
t.swap(tester1, tester2);
i = tester1 - tester2;
Console.WriteLine("{0}",i);
Console.ReadKey();
}
void swap(enumTest a, enumTest b)
{
enumTest temp;
temp = a;
a = b;
b = temp;
}</span>
输出仍为-2
结构体struct
几乎等同于c/c++中的结构体,但是要想让代码能访问其数据,必须加public关键字
数组
数组必须在使用前初始化,声明方式如下
<span style="font-size:14px;">int[] array;
</span>
初始化方式如下(目的在于给定数组长度,也可以用常数变量来初始化)
<span style="font-size:14px;">array=new int[5];</span>
用foreach(type var in array)可以遍历数组,但不能改变数组元素的值
字符串转字符数组函数string.ToCharArray(),获取长度string.Lenth,ToLower() ToUpper()分别转为小写和大写,这里的几个函数不会改变数组