问答中心分类: C#类型后的问号(例如:int?myVariable)的用途是什么?
0
匿名用户 提问 4天 前

问号通常主要用于条件,x ? "yes" : "no".
但我看到了它的另一个用途,但找不到对?例如,运算符。

public int? myProperty
{
   get;
   set;
}
7 Answers
0
Klaus Byskov Pedersen 回答 4天 前

这是Nullable<int>.Nullable<T>用于允许将值类型设置为null. 值类型通常不能为空.

第二句话把我弄糊涂了。你说的“不能”是什么意思?在编译器级别或应用程序上下文中。

Klaus Byskov Pedersen 回复 4天 前

@根据定义,问题官员,value types不能为空。如果您声明一个int或bool(都是值类型),而没有指定值,那么它们仍然会有值(分别为0和false),也就是说,它们不会为null。未分配reference types另一方面,对象或MyClass等将为null。您可能想了解值类型和引用类型之间的差异。

0
eKek0 回答 4天 前

在里面

x ? "yes" : "no"

这个?声明如果句子在这里:x个表示布尔条件;之前的零件:然后句子和后面的部分是其他的句子
例如,在,

int?

这个?声明一个可为null的类型,并表示它之前的类型可能具有null值。

Gus Crawford 回复 4天 前

我看不出“?”之间有任何关系声明可为null的类型和三元表达式。先生,否决你的回答。

Mario Levesque 回复 4天 前

我不同意Gus的上述评论。这个问题表明,三元表达式可能存在混淆。这个答案解决了这个问题。

C4d 回复 4天 前

在哪里使用这种空比较?在一次退货中,这似乎是不允许的。return value ? value : "isNull";告诉我string value无法转换为布尔值。

FastTrack 回复 4天 前

我必须说,这是一个非常复杂的答案,尤其是在这个问题上与其他人相比-1.

BerggreenDK 回复 4天 前

这个问题表明它与x无关?“yes”:“no”,但关于在类型声明后使用问号的时间。在我看来,这是一个非常糟糕的答案。

0
Thanos Papathanasiou 回答 4天 前

它声明该类型可为null。

0
A.J.Bauer 回答 4天 前

实际用途:

public string someFunctionThatMayBeCalledWithNullAndReturnsString(int? value)
{
  if (value == null)
  {
    return "bad value";
  }

  return someFunctionThatHandlesIntAndReturnsString(value);
}
0
Nicola Amadio 回答 4天 前

int?是的缩写Nullable<int>. 这两种形式可以互换。
Nullable<T>是可用于值类型的运算符T让它接受null.
如果您不知道:值类型是接受值的类型int,bool,char
它们不能接受对值的引用:如果为它们指定null,而不是引用类型,这显然是可以接受的。
你为什么需要这个?
我建议你阅读Microsoft文档因为它很好地涵盖了这个主题。