相关疑难解决方法(0)

你为什么要使用String.Equals而不是==?

我最近被介绍到一个大型代码库,并注意到所有的字符串比较都使用String.Equals()而不是==

你觉得这是什么原因?

c# string equals

306
推荐指数
8
解决办法
27万
查看次数

C#中==运算符和Equals()方法的区别?

==Equals()示例有什么区别?我知道==用于比较运算符和Equals()方法用于比较string的内容.所以我试过

// first example
string s1 = "a";
string s2 = "a";
Console.Write(a.Equals(s2)); // returns true, but if I assign "b" to s2,
                             // then result will be false

// second example
string s1 ="a";
string s2 ="a";
Console.Write(s1 == s2);     // returns true
Run Code Online (Sandbox Code Playgroud)

怎么会这样?两者都是不同的对象引用.假设我们认为这些是参考.但我试着这样使用

string s1 = new string("ab");
string s2 = new string("ab");
Run Code Online (Sandbox Code Playgroud)

我收到编译时错误,无法将字符串转换为char

c# string equals equals-operator

17
推荐指数
2
解决办法
1万
查看次数

字符串文字是否由编译器优化?

C#编译器或.NET CLR是否对字符串文字/常量进行了任何巧妙的内存优化?我可以发誓我听说过"字符串内化"的概念,所以在程序的任何两位代码中,字面意思"这是一个字符串"实际上是指同一个对象(大概是安全的,字符串是什么一成不变的?).我在谷歌上找不到任何有用的参考资料......

我听错了吗?别担心 - 我的代码中没有用这些信息做任何可怕的事情,只是想更好地了解它的工作原理.

c# string optimization

15
推荐指数
3
解决办法
3141
查看次数

字符串等式运算符==在c#中

我试图在C#中查看为字符串类中的比较运算符实现的代码.发现是这样的:

//THIS IS NOT WHAT I MEANT
public static bool Equals(object objA, object objB)
{
    return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}

//THIS IS WHAT I SEE REALLY and the above is what I would expect to see
public static bool Equals(string a, string b)
{
    return ((a == b) || (((a != null) && (b != null)) && EqualsHelper(a, b)));
}



public static bool operator ==(string a, string b)
{
    return …
Run Code Online (Sandbox Code Playgroud)

c# string equality operator-overloading

3
推荐指数
2
解决办法
3234
查看次数