View Code
案例1:隐式转换 class Program { /// <summary> /// 自动类型转换 隐式转换 /// </summary> /// <param name="args"></param> static void Main(string[] args) { //规则:对于数组类型,A的取值范围完全包含在B内 int i = 123; //内部做了个一个自动的类型转换 float f = i; double d = f; long L = i; short s = 30; int t = s; long L2 = s; int num1 = 10, num2 = 20; /*实参是整数,形参是单精度浮点数,会将整数做自动类型转换, * 将整数转换为单精度浮点数,因为int的取值范围比float小*/ double F=Add(num1,num2); Console.Write(F); Console.ReadKey(); } static double Add(float num1,float num2) { //float 取值范围比double小,所以相加后float自动转换为double类型 return num1 + num2; } } ———————————————————————————————————————————————————————————— 案例2:强制转换 //显示转换(强制类型转换),注:强制类型转换可能会精度丢失 double Score = 58.5; int bonus = 2; int sum; sum = (int)Score + bonus; Console.WriteLine("总分为:{0}", sum); Console.ReadKey(); —————————————————————————————————————————————————————————— 案例3://以下数据类型的取值范围都小于或等于double类型所以发生隐式转换 double a = 2.2; double e1=VD(a); Console.WriteLine(e1); int b = 2; double e2 = VD(b); Console.WriteLine(e2); long c = 30; double e3 = VD(c); Console.WriteLine(e3); short d = 3; double e4 = VD(d); Console.WriteLine(e4); byte e = 22; VD(e); double e5 = VD(e); Console.WriteLine(e5); //string无法隐式转换为double,所以这里使用XXX.Parse方法转换 string str = "1,2,3"; double f=VD(double.Parse(str)); Console.WriteLine(f); Console.ReadKey(); } static double VD(double r) { return (4 / 3) * Math.PI * r * r * r; --------------------------------------------------------- 案例4:转换两种类型比较 int i = 100; //通过ToString()方法,可以用于转换string类型 string str = i.ToString(); Console.WriteLine(str); //xxx.Parese()方法用于将字符串转换为xxx类型 float f = float.Parse(str); byte b = byte.Parse(str); /*数据类型转换需要注意,例如将一个非数值的字符串转换成相应的数值类型,会发生格式化异常*/ //string str2 = "Welcome!"; //double d = double.Parse(str2); Console.ReadKey(); —————————————————————————————————————————————— 案例5:强制转换精度会丢失 double myDoudle = 85.63; Console.WriteLine("转型前:{0}", myDoudle); //使用强制类型转换,精度会丢失 int num3 = (int)myDoudle; //使用Convert.ToInt32方法将小数转换成整数,会四舍五入 int num1 = Convert.ToInt32(myDoudle); float num2=Convert.ToSingle(myDoudle); string str = Convert.ToString(myDoudle); Console.WriteLine("int\tfloat\tstring\t强制转换"); Console.WriteLine("{0}\t{1}\t{2}\t{3}",num1,num2,str,num3); // double d = 2.3; float f = 2.1f; long L = 20000; int n1 = Convert.ToInt32(d); int n2 = Convert.ToInt32(f); int n3 = Convert.ToInt32(L); Console.WriteLine(n1); Console.WriteLine(n2); Console.WriteLine(n3); Console.ReadKey(); ———————————————————————————————————————————————— 案例6:ASCII编码常用 //编号:48-57表示(0-9) //编号:65-90表示大写字母(A-Z) //编号:97-122 表示小写字母(a-z) char c = 'A'; int code = (int)c; Console.WriteLine("将{0}字符转换为数字{1}", c, code); char c1 = 'c'; int code1 = (int)c1; Console.WriteLine("将{0}字符转换为数字{1}", c1, code1); char c2 = (char)99; Console.WriteLine("将{0}字符转换为数字{1}", 99, c2); Console.ReadKey(); —————————————————————————————————————————————————————— 案例7:占位符的重复使用 static void Main(string[] args) { string yi = "一"; string er = "二"; string san = "三"; string word = string.Format("独{0}无{1},{2}心{1}意,垂涎{2}尺,略知{0}{1},举{0}反{2}",yi,er,san); string[] px = word.Split(','); string str = string.Join(",", px); Console.Write(str); Console.ReadKey();