有趣的修饰符之??、?:、?

良好的程序修养在于灵活运用各类语法(修饰符)。本文介绍下,在C#语言中的??(双问号操作符)、?:(三元表达式)、?(单问好操作符)

1,??

为了实现Nullable数据类型转换成non-Nullable型数据,就有了一个这样的操作符”??(两个问号)“,双问号操作符意思是取所赋值??左边的,如果左边为null,取所赋值??右边的。

比如int y = x ?? -1 如果x为空,那么y的值为-1.

于是这时候就可以把最上面第二段代码改成:string strParam= Request.Params["param"]?? "";

2,?:

在使用条件操作符的时候要注意,假定条件表达式是这样 x?y:z,

表达式类型的只能是使y 和z的变量类型之一,换句话说就是 y和z的变量类型决定这个条件表达式的类型,

无论y和z是同一类型,还是y和z不是同一类型。 如果表达式的类型和赋值类型不一致,发生编译时错误 。

string strTemp;

object obj = strTemp == ""?DBNull.Value:strTemp;

你编译的时候,会报错。因为DBNull和string之间没隐式转换,修改成如下代码就可以了:

object obj = strTemp == ""? DBNull.Value: (object)strTemp;

另外条件操作符是向右关联的,从左到右进行计算,于是a?b:c?d:e 应理解为 a?b:(c?d:e)。

3,?

”?(单问号)“修饰符,是System.Nullable的缩写形式,比如int?代表是可空的整形,

例如:int? a = 1 或者 int? b=null。Nullable类型具有一个HasValue的bool类型只读属性,

当Nullable类型实例的该属性为true时,则表示该实例是非空实例,包含一个已知值Value,

HasValue为false时,访问Value属性将导致System.InvalidOperationException。

时间: 2024-10-04 00:04:43

有趣的修饰符之??、?:、?的相关文章

《编程导论(Java)·6.3 private修饰符》

修饰符private提供了最高的保护和最低的可见度:private修饰的域.方法和嵌套类型,只能在它的定义类中访问. 6.3.1 private 各类书籍中会有一些程序设计上的清规戒律,如: ★以private修饰所有的成员变量(Make all Member Variables private.). ★以private修饰任一助手方法.(Make any helper methods private). 这些启发式规则是一种自律条款.对于Java包的设计者而言,包级私有已经是良好的天然边界(不

Java基础——protected访问修饰符探讨

Java基础——protected访问修饰符探讨 根据官方说法:(如图) protected修饰符是可以修饰其他包中的自损类的,但是我做了个实验,结果发现了一个有趣的现象! 具体请往下看: package com.demo1; public class Demo1 { protected Demo1(){ System.out.println("protected"); } protected void function(){ System.out.println("受保护方

静态修饰符static,类中的常量定义修饰符

static可以用来区分成员变量.方法是属于类本身还是属于类实例化后的对象.有static修饰的成员属于类本身,没有static修饰的成员属于类的实例. 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失static是一个修饰符,用于修饰成员(成员变量和成员函数)静态成员随着类的加载而加载.静态成员优先于对象存在.静态成员被所有对象所共享静态成员多了一个中调用方式,可以被类名直接调用.静态的优缺点优点: 静态成员多了一种调用方式.可以直接被类名调用 格式 :类名.静态成员.也

修饰符-包-内部类-代码块执行顺序

1.访问权限修饰符     从大到小的顺序为:public--protected--default--private     private--只能在同一类中使用;     default--不用写出来,默认不加.可以被同一包中的类使用     protected--可以被不同包的子类使用     public--可以被不同包的其它类使用 2.各种修饰符的修饰对象(可修饰哪些:类/接口/方法/属性)(多个修饰符连用是可以没有顺序的!)     1)访问权限修饰符:public/default--

访问修饰符

访问修饰符:public.protected.Default.private Public:是公共的,公有的.在任何一个地方都可以访问,一个类里面只有一个public的类,对外的公共类只有一个.成员变量可以用public.局部变量不可使用访问修饰符. Public void getName(){ } Protected:受保护的,在同一个包中可以访问,或者是不同包中的子类可以访问. Protected void getName(){} Default:默认的访问修饰符,只能在同一个包中访问. (

scala学习手记10 - 访问修饰符

scala的访问修饰符有如下几个特性: 如果不指定访问修饰符,scala默认为public: 较之Java,scala对protected的定义更加严格: scala可以对可见性进行细粒度的控制. scala的默认访问修饰符 如果没有修饰符,scala会默认把类.字段.方法的访问修饰符当做public.如果要将之调整为private或protected,只需在前面添加对应的修饰符关键字即可.就如下面的程序: class Microwave{ def start() = println("star

包、修饰符、内部类、匿名内部类(java基础知识十)

1.package关键字的概述及作用 * A:为什么要有包     * 将字节码(.class)进行分类存放  * B:包的概述     *   * C:包的作用     * 包名要定义在第一行,     * 包名.*这个包下所有的类都可见     * 具体的类比较好,能提高效率 2.包的定义及注意事项 * A:定义包的格式 * package 包名; * 多级包用.分开即可* B:定义包的注意事项 * A:package语句必须是程序的第一条可执行的代码 * B:package语句在一个jav

初来驾到学java修饰符的使用

年一过完学习起来特精神感受一下java修饰符的应用于区别 访问修饰符的使用权限:最大的是public修饰符的属性他可以在任意的地方调用 其次是protected修饰符它不除不能再非不同包的子类调用外其他的都可以 默认的修饰符不能再不同包之间调用 同包的情况下不同类子类非子类均可调用. privatie是私有的只能在本类中调用 包 同包 不同包 使用限制 关系 本类 子类 非子类 子类 非子类 private O X X X X 私有的 默认 O O O X X 默认 protected O O

JavaSE入门学习10:Java修饰符

Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: <span style="font-size:18px;">public class className { // ... } private boolean flag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42;