5. 变量的更多内容 5.11 隐式转 一般将字节数较小的数据类型转换为字节数较大的数据类型(当然也可以相等 例如:ushort与char(等字节) int与double (小->大) 5.12 显式转换 显式转换发生的情况一般是将字节数比较大的类型转换为字节数较小的类型 例如: byte destinationByte; short sourceShort destinationByte=(byte)sourceShort; 注意:在这种情况下赋值可能会导致结果溢出; 例如:sourceShort=281; 如果执行此句 destinationByte=(byte)sourceShort;将会使destinationByte的值变为25 因为:281=100011001 25= 00011001 255=01111111 在这时候我们可以采取相应的措施来解决 比如:checked(expression) 或者unchecked(expression) destinationByte = checked((byte)sourceShort) 另一种方法是修改配置应用程序: ①点击解决方案资源管理器如图: 进行相应的设置如图 再点击右边的高级,按下图操作 5.1.3使用convert命令进行显式转换 int varInt; short varShort = 10 ; float varFloat = 20; varInt = varShort * (short)varFloat; //此句所得的结果就是类型为int的数值,varInt若是其他类型,则将报错。 varDouble = Convert.ToDouble("125"); Console.WriteLine(varInt); 5.2复杂的变量类型 ①枚举类型 形式:enum Typename { Value1, Value2, Value3, . . Valuen } 此类型默认情况下使用一个int类型存储 如果想改变这种存储就可以换这种定义: enum Typename :underlyingType(int) { Value1, Value2, Value3, . . Valuen } 经常出线这种现象 enum Typename { Value1=actualval, Value2, Value3=value1, Value4, . Valuen } 此时value2=value4 还有可能出现这种迂回情况容易导致错误 enum { Value1=value2 Value2=value1 } 枚举类型定义一般放在命名空间中 namespace test { enum Direction { north, south, east, west } class Program { } 结构 ②Struct Typename { } ③数组的声明: (1)一维数组: 定义:如:int [] varInt; 初始化的情况: Const int varInt=5; int [] arrary = {5,3,9,4,3}; int [] arrary = new int [5];默认每个元素都是0. int [] arrary = new int [varInt]; 默认每个元素都是0. 定义时不可以这样写: Int [] array; Array = new int [5]; 因为定义数组时,必须分配其大小。 给数组赋初值时,还有一点要注意的数组大小必须与元素个数相匹配 如: Int [] array = new int [5] {1,2,3,4,5}; Int [] array = new int [5] {1,2,3 };这是错误的 还可以 foreach循环来读取数组元素的值,但是不能修改。 与此相反,for循环即可读取信息,又可修改信息 foreach (int var in array) { Console.WriteLine(var); } (2)多维数组 定义:double [ , ] hillheight = new double [3,4]; 赋初值: double[ ,] hillheight = new double[2, 3] {{4,2,3},{4,5,6}}; 或者 double[ ,] hillheight = {{4,2,3},{4,5,6}}; (3)数组的数组(每一行的元素个数可以不一样,严格的来说,就是多维数组的一种 ) 赋初值:① int[][] var2; var2 = new int[2][]; var2[0] = new int[4]; var2[1] = new int[3]; var2[0][1] = 2 ; //这里与多维数组不同,因为多维数组时var2[1,2] ②int[][] var2 = {new int[1] {2},new int [2] {3,4} }; ③int[][] var2; var2 =new int [2][] {new int[1] {2},new int [2] {3,4} }; 同时也可用foreach读取数组的数组的值,方法是:使用嵌套的foreach() foreach (int[] vararray in var2) { foreach (int var3 in vararray) { Console.WriteLine(var3); } } 5.5字符串处理 ①字符串string可以转换成char数组 例如: string MyString = "A string"; char[] MyChar = MyString.ToCharArray(); foreach (char ch in MyChar) { Console.WriteLine(ch); } Console.WriteLine(MyChar.Length);//输出数组的大小。 ②将字符串转换为小写 例如: string userResponse = Console.ReadLine(); if (userResponse.ToLower() == "wtq") { Console.WriteLine("你很棒"); } ③将字符串转换为大写 例如: string userResponse = Console.ReadLine(); if (userResponse.ToUpper() == "WTQ") { Console.WriteLine("你很棒"); } ④删除额外的空格 例如: string userResponse = Console.ReadLine(); userResponse = userResponse.Trim(); if (userResponse.ToUpper() == "WTQ") { Console.WriteLine("你很棒"); } ⑤删除额外的字符 例如: char[] trimChars = { ' ','t','q'}; string userResponse = Console.ReadLine(); userResponse = userResponse.Trim(trimChars); if (userResponse == "w") { Console.WriteLine("你很棒"); } ⑥删除字符串的前面或后面的空格 <string>.TrimStart(),<string>.TrimEnd 例如: string userResponse = Console.ReadLine(); userResponse = userResponse.TrimStart(); if (userResponse == "w") { Console.WriteLine("你很棒"); } ⑦<string>.PadLeft和<string>.PadRight分别在字符串的左边或右边添加空格 例如:string MyString = "Aligned"; MyString = MyString.PadLeft(10); Console.WriteLine(MyString); } 注意:也可以在字符串前加其他字符。 例如: string MyString = "Aligned"; MyString = MyString.PadLeft(10,'+'); Console.WriteLine(MyString); ⑧分割字符串<string>.Split() 例如: string MyString = "this is a test"; char [] Separator = {' ','i'}; string[] MyWords; MyWords = MyString.Split(Separator); foreach (string word in MyWords) { Console.WriteLine(word); } ⑨将字符串倒序 方法一: String text =”wtqwtqwtq”; char[] cArray = text.ToCharArray(); string reverse = String.Empty;//相当于给reverse赋初值 for (int i = cArray.Length - 1; i > -1; i--) { reverse += cArray[i]; } console.WriteLine(reverse); 方法二:string text = "wtqwtqwtq"; char[] charArray = text.ToCharArray(); Array.Reverse(charArray); Console.WriteLine( charArray );