我在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)
任何理由为什么会这样?
为什么我们需要在C#中装箱和拆箱?
我知道拳击和拆箱是什么,但我无法理解它的实际用途.我应该在哪里以及在哪里使用它?
short s = 25;
object objshort = s; //Boxing
short anothershort = (short)objshort; //Unboxing
Run Code Online (Sandbox Code Playgroud) 考虑以下代码:
static int x2 = 10;
public static void Main()
{
short y = 10;
Console.WriteLine(y.Equals(x2)); //False
Console.Read();
}
Run Code Online (Sandbox Code Playgroud)
为何y.Equals(x2)回归false?
这是一个更广泛的问题,以我的具体例子为例。到此为止的代码相当复杂,所以我希望这已经足够了。
C#中什么情况下两个相同的int不相等?
1005 == 1005 //false
Run Code Online (Sandbox Code Playgroud)
specConversion首先作为传递的 string ,其中确定(类的属性)spec的类型,然后将其转换为该类型。这似乎按预期工作,因为此时两个变量具有相同的类型。我不确定其中任何一个是否与最初的问题相关:为什么这两个 int 值不相等?yspecspecConversion