考虑以下代码段:
char ch = '[';
string d = "[";
Console.WriteLine(ch.Equals(d))
输出将是false
.
当你想要它的时候你会怎么做true
?
编辑:
变量d
在示例中是一个字符串,但实际上它可以是任何对象...
利用ToString();
var result = '['.ToString().Equals("[");
当你想要它是真的时你会怎么做?
使用将您的char
ch 转换为字符串ch.ToString
Console.WriteLine(ch.ToString().Equals(d));
或使用将字符串转换为字符Convert.ToChar
Console.WriteLine(ch.Equals(Convert.ToChar(d)));
但如果您的字符串包含多个字符,上述操作将失败。
编辑:
变量 d 在示例中是一个字符串,但实际上它可以是任何对象...
那么最好使用Convert.ToChar(object)
方法将对象转换为字符,然后比较是否相等。
string d = "[";
char ch = '[';
object o = (object)d;
Console.WriteLine(ch.Equals(Convert.ToChar(o)));
object
如果不可转换为,则上述内容可能会引发异常char
,为了安全起见,您可以使用char.TryParse
如下:
string d = "[";
char ch = '[';
object obj = (object)d;
char temp;
bool result = obj != null &&
char.TryParse(obj.ToString(), out temp) &&
ch == temp; //same as ch.Equals(temp);
如果转换为字符不成功,这将返回 false。
这取决于你的意图。无论是这个
Console.WriteLine(ch.Equals(d[0]));
或者那个
Console.WriteLine(ch.ToString().Equals(d));
如果d
可以是任何对象(就像您添加的那样),您也可以尝试使用d.ToString()
。char
但是将 a与滑块进行比较有什么意义呢?根据对象的实际类型,比较可能会意外变为 True。
更普遍:
char ch = '[';
string d = "[";
bool areEqual = (d != null) && (d.Length == 1) && (d[0].Equals(ch));
假设您在将 null 或“[XXX”与“[”进行比较时不希望它为真。