代码之家  ›  专栏  ›  技术社区  ›  Tim

当我对未初始化的char对象属性调用ToString()时,会返回什么?

c#
  •  3
  • Tim  · 技术社区  · 17 年前

    我有一个c#对象,它有一个名为Gender的属性,该属性被声明为char。

    private char _Gender;
    public char Gender
    {
        get{ return _Gender; }
        set{ _Gender = value; }
    
    }
    

    调用MyObject时返回/创建了什么字符串。性别。ToString()?

    我这样问是因为我正在调用一个Web服务(它接受字符串而不是char),所以我在传递属性时对其执行ToString。我原本预计,如果未设置char,它会发送一个空字符串。

    然而,事实似乎并非如此,所以问题是字符串是什么?

    3 回复  |  直到 17 年前
        1
  •  2
  •   Jon Skeet    17 年前

    char的默认值是unicode 0,所以我希望返回“\u0000”。

        2
  •  2
  •   Marc Gravell    17 年前

    字段始终初始化为默认值;0/false/null-这是0个字符,\0。

    如果你想要一个空字符串,直接使用字符串,即“”。

    您可以使用条件运算符:

    string s = c == 0 ? "" : c.ToString();
    

    或者,可以为null的类型可能会有所帮助,例如。

    char? c; // a field
    ...
    string s = c.ToString(); // is ""
    c = 'a';
    s = c.ToString(); // is "a"
    
        3
  •  0
  •   Sam    17 年前

    char的长度为1,因此它永远不应该返回空字符串。

    如果你想区分0和未初始化,你需要使用可以为null的char?形式?。