在未初始化的char对象属性上调用ToString()时返回的内容

本文关键字:返回 ToString 初始化 char 对象 属性 调用 | 更新日期: 2023-09-27 17:47:48

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

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

当我调用MyObject.Gender.ToString()时,返回/创建了什么字符串?

我之所以这么问,是因为我正在调用一个Web服务(它接受字符串而不是字符),所以我在传递属性时对其执行ToString。如果没有设置字符,我希望它发送一个空字符串。

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

在未初始化的char对象属性上调用ToString()时返回的内容

char的默认值是unicode 0,所以我希望返回"''u0000"。

字段始终初始化为默认值;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"

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

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