-1

考虑以下代码段:

char ch = '[';
string d = "[";

Console.WriteLine(ch.Equals(d))

输出将是false.

当你想要它的时候你会怎么做true

编辑:

变量d在示例中是一个字符串,但实际上它可以是任何对象...

4

4 回答 4

2

利用ToString();

var result = '['.ToString().Equals("[");
于 2013-05-22T09:07:17.770 回答
2

当你想要它是真的时你会怎么做?

使用将您的charch 转换为字符串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。

于 2013-05-22T09:07:53.717 回答
0

这取决于你的意图。无论是这个

Console.WriteLine(ch.Equals(d[0]));

或者那个

Console.WriteLine(ch.ToString().Equals(d));

如果d可以是任何对象(就像您添加的那样),您也可以尝试使用d.ToString()char但是将 a与滑块进行比较有什么意义呢?根据对象的实际类型,比较可能会意外变为 True。

于 2013-05-22T09:10:21.947 回答
0

更普遍:

char ch = '[';
string d = "[";

bool areEqual = (d != null) && (d.Length == 1) && (d[0].Equals(ch));

假设您在将 null 或“[XXX”与“[”进行比较时不希望它为真。

于 2013-05-22T09:13:43.007 回答