第十一节 自动类型转换即隐式转换、强制转换、ASCII编码常用、占位符重复使用

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();

 

posted @ 2012-06-20 10:55  ComBat  阅读(238)  评论(0编辑  收藏  举报