我确信这些信息可以在C#规范中找到,但我想我会给你一个机会让我直截了当。为什么这段代码不能编译?
namespace DataObjects
{
class QuestionMark
{
public bool Possible? {get; set;}
}
}
有什么方法可以让我的布尔属性以问号结尾?我认为这会增加可读性并且很有趣。
让我们听听吧!
答案 0 :(得分:15)
为什么不将它命名为IsPossible
?
这是明确的,有意思的,没有混淆的主题。
问号是一个特殊字符,用于表示值类型为“可空”。
答案 1 :(得分:9)
我实际上并不认为它与可空类型有很大关系,因为这很容易根据类型声明来确定。它可能与三元运算符有更多关系。如果你有一个变量?最后,您将无法确定变量的正常引用与ternery调用之间的差异。例如:
int a;
bool b?;
a = b? ? 15 : 22;
答案 2 :(得分:2)
来自the standard:
identifier-start-character::
letter-character
_ (the underscore character U+005F)
identifier-part-characters::
identifier-part-character
identifier-part-characters identifier-part-character
identifier-part-character::
letter-character
decimal-digit-character
connecting-character
combining-character
formatting-character
letter-character::
A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
A unicode-escape-sequence representing a character of classes Lu, Ll, Lt, Lm, Lo, or Nl
combining-character::
A Unicode character of classes Mn or Mc
A unicode-escape-sequence representing a character of classes Mn or Mc
decimal-digit-character::
A Unicode character of the class Nd
A unicode-escape-sequence representing a character of the class Nd
connecting-character::
A Unicode character of the class Pc
A unicode-escape-sequence representing a character of the class Pc
formatting-character::
A Unicode character of the class Cf
A unicode-escape-sequence representing a character of the class Cf
因此,标识符仅限于包含Unicode标准中被视为“字母”的字符。 “?”是一个标点字符(Po类)。
答案 3 :(得分:0)
?是C#中的特殊字符。如果它遵循类型,则表示type is nullable。
答案 4 :(得分:0)
这样做无效。
这是一种Rubyism吗? : - )