相关疑难解决方法(0)

==和等于()之间的C#差异

我在Silverlight应用程序中有一个比较2个字符串的条件,由于某种原因,当我使用==它时返回false.Equals()返回true.

这是代码:

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // Execute code
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // Execute code
}
Run Code Online (Sandbox Code Playgroud)

任何理由为什么会这样?

.net c# equals

519
推荐指数
9
解决办法
28万
查看次数

==或.Equals()

为什么用一个而不是另一个?

c#

59
推荐指数
5
解决办法
2万
查看次数

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

什么时候==会以不同的方式覆盖.equals?

我理解==和.equals之间的区别.这里还有很多其他问题可以解释细节上的差异,例如这一点:.Equals和==这一点之间的区别是什么:其他许多人之间的比例平等.

我的问题是:为什么他们两个(我意识到必须有一个很好的理由) - 他们似乎都做同样的事情(除非被覆盖不同).

什么时候==会以不同的方式超载.equals被覆盖?

c# equality

15
推荐指数
2
解决办法
1284
查看次数

为何回归虚假?新人("詹姆斯")==新人("詹姆斯")?

我有覆盖GetHashCode,Equals并且两种方法为不同的对象提供相同的结果,但为什么仍然得到假?

class Program
{
    static void Main(string[] args)
    {    
        Console.WriteLine(new Person("james") == new Person("james"));    
        Console.ReadKey();
    }    
}

class Person
{
    private string Name;

    public Person(string name)
    {
        Name = name;
    }
    public override int GetHashCode()
    {
        return 1;
    }
    public override bool Equals(object obj)
    {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# equals gethashcode

8
推荐指数
2
解决办法
728
查看次数

C# Equals() == 关于数字

我尝试以下代码使用==Equals数字比较:

Console.WriteLine( (int)2 == (double)2.0 );     
Console.WriteLine( ( (int)2 ).Equals( (double)2.0) );

Console.WriteLine((float)2.0 == (double)2.0);
Console.WriteLine( ( (float)2.0 ).Equals( (double)2.0 )   );
Run Code Online (Sandbox Code Playgroud)

结果:

true 
false
true 
false
Run Code Online (Sandbox Code Playgroud)

int, double, float都是ValueType,在阅读了帖子Here1Here2后,我仍然无法理解为什么==结果Equals不同,

这4个案例==背后的工作细节是什么?Equals

(如果这个问题重复,请告诉我)



编辑: 4个更有趣的案例:

双精度型、浮点型 <-> 整数型

Console.WriteLine((double)2.0 == (int)2);              //True
Console.WriteLine(((double)2.0).Equals((int)2));       //True

Console.WriteLine((float)2.0 == (int)2.0);             //True
Console.WriteLine(((float)2.0).Equals((int)2.0));      //True
Run Code Online (Sandbox Code Playgroud)

双精度型、整型 <-> 浮点型

Console.WriteLine((double)2.0 == (float)2.0);          //True
Console.WriteLine(((double)2.0).Equals((float)2.0));   //True

Console.WriteLine((int)2 == (float)2.0);               //True …
Run Code Online (Sandbox Code Playgroud)

c#

6
推荐指数
2
解决办法
6192
查看次数

价值与参考

我应该从以下结果中做出关于Equals(),ReferenceEquals()和==的决定?它们实际上产生了什么?

#region
int integer = 1;
int integer2 = integer;

bool referenceEquality = (integer == integer2);//true
bool valueEquality = integer.Equals(integer2);//true
bool valueEqualityMore = object.Equals(integer, integer2);//true
bool valueEqualityMoreMore = object.ReferenceEquals(integer, integer2);//false
#endregion

#region
int integer = 1;
int integer2 = 1;

bool referenceEquality = (integer == integer2);//true
bool valueEquality = integer.Equals(integer2);//true
bool valueEqualityMore = object.Equals(integer, integer2);//true
bool valueEqualityMoreMore = object.ReferenceEquals(integer, integer2);//false
#endregion

#region
MyClass obj = new MyClass(1, "Hello");
MyClass obj2 = obj;

bool referenceEquality = (obj == obj2);//true
bool valueEquality …
Run Code Online (Sandbox Code Playgroud)

c# reference

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

标签 统计

c# ×7

.net ×2

equals ×2

equality ×1

gethashcode ×1

java ×1

reference ×1