如何在C#中使用问号结束属性?

时间:2010-04-13 21:16:47

标签: c# special-characters

我确信这些信息可以在C#规范中找到,但我想我会给你一个机会让我直截了当。为什么这段代码不能编译?

namespace DataObjects
{
    class QuestionMark
    {
        public bool Possible? {get; set;}
    }
}

有什么方法可以让我的布尔属性以问号结尾?我认为这会增加可读性并且很有趣。

让我们听听吧!

5 个答案:

答案 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吗? : - )