using System; using System.Collections.Generic; using System.Linq; using System.Text; /*类型转换Cast(*) *把源类型赋值给目标型,两个类型不一致的时候会发生类型转换,a=b,b是源,a是目标 *隐式转换,显示式转换,当目标型一定能满足源类型转换过去后的要求的话就是隐式转换,如果当目标类型不一定能满足源类型转换过去后的要求的话就需要显示转换(自己负责) *把中国人转换为人是隐式转换,把人转换为中国人则是显示式转换 *内存中的数据没有变化,只是不同的视角而已 *byte b=1, int i=1, i=b, b=(byte)i *为什么要显示转换,编译器不能保证一定正确,转换结果自己负责,要人给一个中国人当前没问题,但是要中国人给一个人则可能有问题 *编译器不承担这个责任,由开发人员来保证 *中人在内存存储上存在交集的类型之间才能进行cast,否则则不可以,比如不可以int i, int s=(string)i *反之也不可以,这种情况必须用Convert类提供的方法 * * * 类型转换Convert * Convert不再是内存级虽的转换,而是考虑数据意义的转换,可以把姓名Convert成人,Convert是一个加工,疑改造的过程 * Convert.ToInt32,Convert.ToString每种类型都还有ToString方法(类型的ToString和Convert.ToString略微的差虽暂时不用关心) */ namespace _29Case类型转换 { class Program { static void Main(string[] args) { Console.WriteLine("int最大值{0},最小值{1}",int.MaxValue,int.MinValue); Console.WriteLine("byte最大值{0},最小值{1}",byte.MaxValue,byte.MinValue); byte b = 3; int i1 = b; //这里是进行隐式转换 //b = i1; b = (byte)i1; //这里进行显示转换 //一定能满足条件的叫隐式转换,不一定能满足条件的叫显示转换或者强制转换 //for练习1: 用for实现计算1到100之间的所有整数的和 int sum=0; for (int i = 0; i <= 100; i++) { sum += i; } Console.WriteLine("1到100的总和是:{0}",sum); //for练习2: 用for实现计算200到300之间的所有整数的和 sum = 0; for (int i = 200; i <= 300; i++) { sum += i; } Console.WriteLine("200到300的总和是:{0}", sum); Console.ReadKey(); } } }