zoukankan      html  css  js  c++  java
  • C#中运算符的介绍和使用

    下面将介绍C#中的常用到的运算符:条件运算符,is 运算符,as 运算符,sizeof 运算符,typeof 运算符,空合并运算符,空值传播运算符。

    1、条件运算符( ?: )

    条件运算符也称作三元运算符,是if..else 的简化形式,其名称的出处是他带有三个操作数。他首先判断一个条件,如果条件为真,返回第一个值,否则返回第二个值。恰当的使用三元运算符可以使程序更加简洁。

    形式: condition ?  true_value:false_value  ,如:int a = c > 0 ? c -1:c+1; 

    // 一个方法,返回值是 int 类型,参数是 可空类型 int?,该方法用来判断参数是否为空,不为空返回 +1 值,否则返回 0
    public int  GetNum(int? a)
    {
        // 1. 使用if...else
        if(a != null)
        {
            return (int)a + 1;
        }
        else
        {
            return 0;
        }
     
        // 2.使用三元运算符
        return a != null ? (int)a + 1 : 0;
    }
    可空类型的介绍和使用点击打开链接

    2、is 运算符

    is 运算符用来判断变量是否是特定的类型或者是派生自该类型,是返回 true,否则返回 false

    int a = 1;
    // int 类型不是 long 类型,也不派生自 long 类型
    bool type =    a is long; // false
    // int 类型是 int 类型,派生自 object 类型
    bool type1 = a is object; // true
    bool type2 = a is int; // true

    上面只是简单的示例,下面是较复杂的,扩展:uint( 范围:0 ~ 2^32 - 1 ),long( 范围:-2^63 ~ 2^63 -1 ),ulong( 范围:0 ~ 2^64 -1 )

    // 50 是一个整数,如果没有显示声明的话(用小写或大写字母: u 和 U 代表 uint ,l 和 L 代表 long),默认是 int
    object  a1 = 50;
    // 特殊情况:int 类型的最大整数值是 2^31 - 1 = 2147483647,超过这个范围,会依次按照(uint,long,ulong)的范围去定义类型
    object  a2 = 2147483648;
    bool type3 = a1 is int; // true        
    bool type4 = a2 is uint; // true

    3、as运算符

    as 运算符用于将引用类型的显示转换,如果要转换的类型是原类型或者是派生自原类型,则转换成功,否则返回 null

    注意:

    (1)、as 运算符只能用于引用类型;

    (2)、如果转换不成功会返回 null。

    object a = "str";
    object b = 5;
    // a 是 string 类型隐式转换成的 object 类型,as 转换成功
    string c = a as string; // string
    // b 是 int 类型隐式转换成的 object 类型,as 将他转换成 string 类型,返回 null
    string c1 = b as string; // null    

    4、sizeof 运算符用于返回栈中值类型所需长度(单位:字节)。

    // int 是 32 位的,占 4 个字节,1 个字节是 8 位
    int a = sizeof(int); // 4
    注意:sizeof 一般用来获取基本类型的所占字节数,扩展:基本类型(整数,浮点数(decimal 去除),字符类型,布尔类型)

    5、typeof 运算符用于返回 指定类型的 System.Type 对象,常用于反射。

    注意:typeof 和 GetType() 有相同的作用,区别是:typeof 的参数是 类型,GetType() 的参数是类型的变量

    // typeof 的参数是类型,GetType() 方法通过类型的变量调用
    Type a = typeof(AAA);
    AAA aa = new AAA();
    Type b = aa.GetType();

    6、空合并运算符(??)用于引用类型或是可空类型,返回一个非空的值,当第一个操作数不为空的时候返回第一个,否则返回第二个。

    注意:空合并运算符只用于判断 引用类型 和 可空类型 并返回一个非空的值。

    // 可空类型的变量 a
    int? a = null;
    // 当 a 不为空的时候,?? 将 a 显示转换成了 int 类型并赋值给 b,否则 b = 0;
    int b = a ?? 0;
     
    AAA c = new AAA();
    AAA d = c ?? new AAA();
    7、空值传播运算符(?.)用来判断 类 的对象是否为空,为空返回空,否则返回 对应的 字段 或 属性 值。

    注意:当结果为空或其他的话,使用空值传播运算符更加方便,常用于方法的参数判定和赋值。

    public class AAA
    {
        public static int GetNum(BBB aaa)
        {
            int result = 0;
            if(aaa != null)
            {
                // aaa 不为空的时候判断他的字段 bbb 是否为空,不为空返回 bbb 的 字段 ccc 的值,否则返回 0
                result = aaa.bbb != null ? aaa.bbb.ccc:0;
            }
            return result;
        }
        public static int GetNum1(BBB aaa)
        {
            // 按照运算符的优先级,相同的运算符是左关联的(从左到右计算)
            int result = (aaa ?.bbb?.ccc) ?? 0;
            return result;
        }
    }
    public class BBB
    {
        // 包含 CCC 类的一个变量 bbb
        public CCC bbb;
    }
    public class CCC
    {
        // 一个 int 类型的变量 ccc
        public int ccc = 1;
    }
    运算符的优先级点击打开链接

    出处:https://blog.csdn.net/cloproad/article/details/78923363

    您的资助是我最大的动力!
    金额随意,欢迎来赏!
    款后有任何问题请给我留言。

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我。(●'◡'●)

    如果你觉得本篇文章对你有所帮助,请给予我更多的鼓励,求打             付款后有任何问题请给我留言!!!

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【Jack_孟】!

  • 相关阅读:
    Docker笔记
    Fedora dnf配置
    Vue杂谈
    各类技术集锦
    在.NET Core 里使用 BouncyCastle 的DES加密算法
    Srapy爬虫之必备知识
    scrapy爬虫之环境安装
    Git很简单--图解攻略
    Vue.js下载方式及基本概念
    ajax与jsonp定义及使用方法
  • 原文地址:https://www.cnblogs.com/mq0036/p/15259430.html
Copyright © 2011-2022 走看看