什么是运营商“?”像“十进制?”

时间:2018-04-03 02:29:12

标签: c#

您好,我不知道这个"?"运算符是什么。 有谁可以帮我解释一下?

  

公共虚拟小数? abc {get;设置;}

3 个答案:

答案 0 :(得分:3)

这是Nullable<Decimal>的简写。它可以为null,您可以检查.HasValue以查看它是否为空,或者如果有值,您可以获取值.Value

答案 1 :(得分:1)

语法T?是Nullable的简写,其中T是值类型。您可以使用任何语法。

在这种情况下,2个属性很有用。 .HasValue.Value

if(abc.HasValue) a = abc.Value;
if(abc != null) a = abc.Value;
a = abc != null ? abc.Value : 0;

您也可以为它们指定空值。

decimal? abc = null;

答案 2 :(得分:0)

我给出了这种nullable类型有用的场景。例如在你的情况下,abc,它可以保存4.6,7.9,9.45等值。

如果您考虑将abc的值初始化为undefinednull,那么如果您将abc定义为普通小数,则无法进行此操作

public decimal abc { get; set;}

所以如果你将abc定义为像

这样的可空类型
public decimal? abc { get; set;}

您可以将null指定给abc,如下所示

abc= null;

或十进制值

abc = 4.567

如果你想检查abc是否具有非空值,那么有可以检查

的属性

abc.HasValue()这将返回true或false

并且要从abc中获取实际的十进制值,您可以尝试这样

if(abc.HasValue())    
var enteredValue = abc.Value

我希望这会有所帮助