C# 运算符 ?、??、?: 各种问号的用法和说明

 更新时间:2016年04月10日 09:32:23   作者:我不是高手  
本文介绍C#中三种常见的问号运算符的使用方法,简单讲解给大家,希望对大家有所帮助。

 1、可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空,例如:string str=null;是正确的。int i=null;编译器将报错。为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?。例:int?表示是可空的整形,DateTime?表示为可空的时间。T?其实是System.Nullable<T>(泛型结构)的缩写形式,也就意味着当你用到T?时编译器在编译时会把T?编译成System.Nullable<T>的形式,例如:int?,编译后便是System.Nullable<int>的形式。

复制代码 代码如下:

int a; //a<>null
int ?b; //b=null
int ?c = b+1; //c=null;

2、空合并运算符(??):用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。 例:a??b,当a为null时则返回b,a不为空时返回a本身。空合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算。

复制代码 代码如下:

int?a=null; int b;(声明a和b)
b=a??2; //b=2;
a=6;b=a??8;//b=6;

3、三元(运算符)表达式(?:):如果这个你也不了解的话(我很不相信),那你就当我也不了解吧,不再赘述。

复制代码 代码如下:

int a=1>0?1:0 //a=1;

相关文章

  • C# 反射与 Quartz 实现流程处理详情

    C# 反射与 Quartz 实现流程处理详情

    根据要实现流程处理,比如用户可以定义一个定时任务,每周一查看报表。任务是用Quartz可实现,但用户自己选择报表就比较麻烦,这时因为系统的不同模块的生成报表的函数不同,这时便可以传入一个方法名和方法的输入参数,就可以调用该方法。下面小编我为大家介绍具体过程
    2021-09-09
  • 3种方法实现WindowsForm切换窗口

    3种方法实现WindowsForm切换窗口

    这篇文章主要介绍了3种方法实现WindowsForm切换窗口,文中讲解非常详细,示例代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • c#系列 list详情

    c#系列 list详情

    这篇文章主要介绍了c#系列 list,list 本质是一个数组,。就跟我们操作系统一样,提前申请内存大小。所以我们程序一般都有一个申请内存,实际使用内存,内存碎片这几个概念,下面俩看文章详细内容吧
    2021-10-10
  • c#动态编译执行对象方法示例 运用映射机制创建对象

    c#动态编译执行对象方法示例 运用映射机制创建对象

    本示例核心技术是运用.NET动态编译技术+.NET映射技术,把一个代码块中的代码,动态编译成程序集后,在运用映射机制,创建对象示例,调用对象方法
    2014-01-01
  • C#连接Informix数据库的问题

    C#连接Informix数据库的问题

    这篇文章主要介绍了C#连接Informix数据库的问题,本文给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • C# 对PDF文档加密、解密(基于Spire.Cloud.SDK for .NET)

    C# 对PDF文档加密、解密(基于Spire.Cloud.SDK for .NET)

    这篇文章主要介绍了C# 基于Spire.Cloud.SDK for .NET对PDF文档进行加密解密,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#警惕匿名方法造成的变量共享实例分析

    C#警惕匿名方法造成的变量共享实例分析

    这篇文章主要介绍了C#警惕匿名方法造成的变量共享,以实例形式分析了C#的匿名方法造成变量共享的原因及对应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • C#使用Task实现执行并行任务的原理的示例详解

    C#使用Task实现执行并行任务的原理的示例详解

    Task是一个表示异步操作的类,它提供了一种简单、轻量级的方式来创建多线程应用程序。本文就来和大家聊聊在C#中如何使用Task执行并行任务吧
    2023-04-04
  • unity学习教程之定制脚本模板示例代码

    unity学习教程之定制脚本模板示例代码

    这篇文章主要给大家介绍了关于unity学习教程之定制脚本模板的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • WPF通过线程使用ProcessBar的方法详解

    WPF通过线程使用ProcessBar的方法详解

    这篇文章主要给大家介绍了关于WPF通过线程使用ProcessBar的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用WPF具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04

最新评论