C#中的问号(?号)用法小结
1. 可空类型修饰符(?):
引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。
例如:
string str=null;是正确的。
int i=null;编译器将报错。
为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?。
例:int?表示是可空的整形,DateTime?表示为可空的时间。
T?其实是System.Nullable<T>(泛型结构)的缩写形式,也就意味着当你用到T?时编译器在编译时会把T?编译成System.Nullable<T>的形式,
例如:int?,编译后便是System.Nullable<int>的形式。
2. 三元(运算符)表达式(?:):
语法为:条件表达式?表达式1:表达式2;
该操作首先求出条件表达式的值(bool类型),为true时调用表达式1,为flase时调用表达式2。
其逻辑为:"如果为真执行第一个,否则执行第二个。"
例:
test ? expression1 : expression2
test 任何 Boolean 表达式。
expression1 test 为 true 时返回的表达式。可能是逗点表达式。
expression2 test 为 false 时返回的表达式。可能是逗点表达式。
例如:
string prm1="4"; string prm2="5";
string prm3 = prm1==prm2?"yes":"no" // 此时prm3值为"no".
3. 空合并运算符(??):
空合并运算符 (null coalescing operator) ??
用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
例:a??b 如果 a 为非空,则 a ?? b 的结果为 a;否则结果为 b 。
空合并运算符为右结合运算符,即操作时从右向左进行组合的。
例:“a??b??c”的形式按“a??(b??c)”计算。
相关推荐
-
C# null 合并运算符??(双问号)使用示例
??是一个二元运算符,如果左操作数非空,则返回左操作数,否则返回右操作数,所以,在一些特定的场合可以用它来代替?:运算符,简化代码书写. 例1: 复制代码 代码如下: int length = Request.QueryString["l"] != null ? int.Parse(Request.QueryString["l"]) : 0; 使用??运算符: 复制代码 代码如下: int length = int.Parse(Request.QueryString
-
C# 运算符 ?、??、?: 各种问号的用法和说明
1.可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空,例如:string str=null;是正确的.int i=null:编译器将报错.为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?.例:int?表示是可空的整形,DateTime?表示为可空的时间.T?其实是System.Nullable<T>(泛型结构)的缩写形式,也就意味着当你用到T?时编译器在编译时会把T?编译成System.Nullable<T&
-
c# 空合并运算符“??”的使用详解
在c#中"??"为空合并运算符,用于定义可空类型和引用类型的默认值. (1)如果此运算符的左操作数不为 null,则此运算符将返回左操作数:否则返回右操作数.例:a??b,当a为null时则返回b,a不为空时返回a本身. (2)右操作数类型必须与左操作数类型相同,或者可以隐式的转换为左操作数类型.否则编译错误. (3)空合并运算符为右结合运算符,即操作时从右向左进行组合的.例:"a??b??c"的形式按"a??(b??c)"计算.
-
c# 操作符?? null coalescing operator
我们可以看下下面的这几个示例来看看这个操作符的使用方法: 复制代码 代码如下: string message = "Hello World"; string result = message ?? "null"; //这里的result的内容是 Hello World 再看下面的这个例子子: 复制代码 代码如下: string message = null; string result = message ?? "It's null"; //在这
-
C# 中的??操作符浅谈
复制代码 代码如下: object nullObj = null; object obj = new Object(); return nullObj ?? obj; // returns obj 主要用作将一个可空类型赋值给不可空类型的简便语法 复制代码 代码如下: int? i = null;int j = i ?? 0; // Unless i is null, initialize j to i. Else (if i is null), initialize j to 0.
-
asp.net 关于==?:和if()else()条件判断等效例子
昨天经高手指导 测试使用了 ==?: 和 if()else() xzyHe 为 DropDownlist 值,如果为空取值为0 复制代码 代码如下: if (xzyHe ==""){int xzyHe==0;else{int xzyHe = DropDownlist.Text.Trim();} 另外一种写法: 复制代码 代码如下: int xzyHe = ConVert.ToInt32(xzyHe == ""?0:int.Parse(DropDownlist.Tex
-
mybatis 中 foreach collection的用法小结(三种)
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. item表示集合中每一个元素进行迭代时的别名, index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置, open表示该语句以什么开始, separator表示在每次进行迭代之间以什么符号作为分隔 符, close表示以什么结束. 在使用foreach的时候
-
C/C++ 中const关键字的用法小结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性. Const作用 NO. 作用 说明 参考 1 可以定义const常量 const int Max = 100; 2 便于进行类型检查 const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误 void f(const int i) { ---} //对传入的参数进行类型检查,不匹配进行提示 3 可以保护被修
-
C#中AutoResetEvent控制线程用法小结
目录 AutoResetEvent主要方法及实践 第二种方法Semaphore 第三种方法,约定每个线程只干自己的事 第四种方法 Mutex 本文主要来自一道面试题,由于之前对AutoResetEvent的概念比较模糊(即使已经使用过了).面试题题目很简洁:两个线程交替打印0~100的奇偶数.你可以先动手试试,我主要是尝试在一个方法里面完成这个任务. 注: Suspend,Resume来控制线程已经在.net framework2.0被淘汰了,原因就是挂起之后,但因为异常而没有及时恢复,如果占用
-
Python argparse中的action=store_true用法小结
目录 Python argparse中的action=store_true用法 前言 示例 官方文档 多了解一点儿 自定义 小结 思考 补充:python库Argparse中的可选参数设置 action=‘store_true‘ 的用法 一.没有default 二.有default Python argparse中的action=store_true用法 前言 Python的命令行参数解析模块学习. 示例 参数解析模块支持action参数,这个参数可以设置为’store_true’.‘store
-
JS中闭包的经典用法小结(2则示例)
本文实例总结了JS中闭包的经典用法.分享给大家供大家参考,具体如下: 闭包这个东西,网上有很多介绍资料.个人看了很多,还是一知半解.这里不做理论介绍,直接给出2个例子. 代码1:记录函数被调用的次数 function a() { var i = 0; function b() { return ++i; } return b; } var c = a(); c();//1 c();//2 这种方式类似C语言中的private static变量,能够保持局部变量的内存不释放. 代码2:正确给DOM
-
浅析JavaScript中的特殊函数及用法小结
目录 写在前面 匿名函数 回调函数 自调函数 作为值的函数 写在前面 JavaScript中的函数本质上是一个对象,我们可以将这个对象赋值给一个变量,这就使JavaScript中的函数变得非常的灵活,现在就来浅看一下JavaScript中函数的一些用法. 匿名函数 JavaScript 可以将函数作为数据使用.作为函数本体,它与普通的数据一样,不一定有名字.没有名字的函数被称之为匿名函数. 示例代码如下: //匿名函数 function(){ //匿名函数,会报错 return '一碗周'; }
-
VBScript中On Error语句用法小结
如果不使用 On Error 语句,则任何运行时错误都是致命的:也就是说,结果会导致显示错误信息并中止运行.一个"允许的"错误处理程序是由 On Error 语句打开的一个处理程序:一个"活动的"错误处理程序是处理错误的过程中允许的错误处理程序. On Error GoTo 0 表示禁止当前过程中任何已启动的错误处理程序. On Error Resume Next 说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行.访问对象时要使用这
-
javascript中match函数的用法小结
javascript中的match函数是使用正则表达式对字符串进行查找,并将查找的结果作为数组返回,在实际开发中非常的有用,使用方法如下: stringObj.match(rgExp) 其中stringObj是必选项.对其进行查找的 String 对象或字符串文字. rgExp是必选项.为包含正则表达式模式和可用标志的正则表达式对象.也可以是包含正则表达式模式和可用标志的变量名或字符串文字. 如果javascript中match函数方法没有找到匹配,返回 null.如果找到匹配返回一个数组并且更
-
c#多线程中Lock()关键字的用法小结
本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待. 每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生. 其中,lock是一种比较好用的简单的线程同步方式,它是通过为给定对象获取互斥锁来实现同步的.它可以保证当一个线程在关键
-
Linux里awk中split函数的用法小结
The awk function split(s,a,sep) splits a string s into an awk array a using the delimiter sep. set time = 12:34:56set hr = `echo $time | awk '{split($0,a,":" ); print a[1]}'` # = 12set sec = `echo $time | awk '{split($0,a,":" ); print
随机推荐
- Vue.js鼠标悬浮更换图片功能
- 64位win7下pl/sql无法连接oracle解决方法
- 将oracle的create语句更改为alter语句使用
- 在Python中使用HTML模版的教程
- 使用Node.js为其他程序编写扩展的基本方法
- android使用service和activity获取屏幕尺寸的方法
- 如何跨站抓取别的站点的页面的补充
- python以环状形式组合排列图片并输出的方法
- Android 数据库文件存取至储存卡的方法
- Xtrabackup使用指南 InnoDB数据备份工具
- Ajax无刷新分页的性能优化方法
- jQuery文字轮播特效
- JavaScript脚本判断蜘蛛来源的方法
- 详解 Kotlin Reference Basic Types, String, Array and Imports
- Java如何从服务器中下载图片
- Java环境配置图文教程(推荐)
- C语言对磁盘文件进行快速排序简单实例
- Android开屏页倒计时功能实现的详细教程
- Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)
- python email smtplib模块发送邮件代码实例