• C# 类型转换


    ✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
    🍎个人主页:小嗷犬的博客
    🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
    🥭本文内容:C# 类型转换


    C# 类型转换


    隐式转换

    类型转换 即不同变量类型之间的相互转换。

    隐式转换 则是不同变量类型之间的自动转换。

    在我们将一个小范围的值赋值给一个大范围的变量或者将一个低精度的值赋值给一个高精度的变量时,会发生这种转换:

    using System;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                int i = 1;
                long l = i;
                Console.WriteLine(l);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这段代码将一个int类型的1赋值给了一个long类型的变量,这里面就发生了隐式转换。

    这样的操作反过来是不行的:

    using System;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                long l = 1;
                int i = l;
                Console.WriteLine(i);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    第10行报错:error CS0266: 无法将类型“long”隐式转换为“int”。存在一个显式转换(是否缺少 强制转换?)

    同样的,double类型的变量也可以存储float类型的值:

    using System;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                float f = 1;
                double d = f;
                Console.WriteLine(d);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    显示转换

    显示转换 是将一个类型的值手动转换成目标类型的转换方式。

    我们可以通过括号加目标类型来进行强制转换:

    using System;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                long l = 1;
                int i = (int)l;
                Console.WriteLine(i);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这样就不会报错。但是当大范围转小范围,或者是高精度转低精度的时候,就要考虑范围和精度的问题了。

    除此之外,我们还可以通过Parse来将字符串转换成对应类型的值:

    using System;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                string s = "123";
                int i = int.Parse(s);
                Console.WriteLine(i);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    前提是输入的字符串要能够直接转换成对应类型的值,而且要符合目标的存储范围。

    上面的两种方法常用于数值之间的转换和字符串转换,我们还可以使用Convert来进行数据之间的转换:

    using System;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                int i = Convert.ToInt32("123");
                Console.WriteLine(i);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    使用Convert.To + 数据类型可以实现更加精确的转换,同时,适用的变量类型也更多。

    如果是其他类型转换成字符串则更加简单,只需要使用ToString就行:

    using System;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                string s = 3.1415.ToString();
                Console.WriteLine(s);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在值之后直接添加.ToString()即可完成转换。

  • 相关阅读:
    centos7 下使用docker安装常见的软件:Redis
    基于python+PHP+MySQL的大学生二手闲置商品交易系统
    centos7下卸载MySQL,Oracle数据库
    绕过WAF(Web应用程序防火墙)--介绍、主要功能、部署模式、分类及注入绕过方式等
    C++:栈与队列,优先级队列
    科技新宠!拓世AI智能直播一体机揭秘,颠覆教学模式!
    完全解析Array.apply(null, { length: 1000 })
    18.C++中模板参数类型推断与引用
    EMQX 实践
    Appium 移动端自动化测试(Mac)
  • 原文地址:https://blog.csdn.net/qq_63585949/article/details/126922006