相关疑难解决方法(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万
查看次数

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

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

你觉得这是什么原因?

c# string equals

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

空字符串作为特例?

我读了Jon Skeet的测验,我想知道为什么我的第二个样本在第一个样本时不起作用.

为什么这会产生true:

object x = new string("".ToArray());
object y = new string("".ToArray());
Console.WriteLine(x == y); //true
Run Code Online (Sandbox Code Playgroud)

但是这个没有:

var k="k";
//string.intern(k); // doesn't help
object x = new string(k.ToArray());
object y = new string(k.ToArray());
Console.WriteLine(x == y); //false
Run Code Online (Sandbox Code Playgroud)

我在vs2010上使用fw 4.5.

幸运的是我也安装了vs2005,结果相同:

在此输入图像描述

.net c#

55
推荐指数
3
解决办法
2404
查看次数

==与.NET中的Object.Equals(对象)

所以,当我现在是新手的比较新手时,我曾经认为这两件事是彼此的语法糖,即使用一个而不是另一个只是个人偏好.随着时间的推移,我发现即使在默认实现中,这两者也不是一回事(参见本章本章).为了进一步混淆这个问题,每个都可以单独覆盖/重载,以具有完全不同的含义.

这是一件好事,有什么区别,什么时候/为什么要使用一个而不是另一个?

.net

50
推荐指数
4
解决办法
5万
查看次数

在String.Equals中使用C#ternary

这有效:

short value;
value = 10 > 4 ? 5 : 10;
Run Code Online (Sandbox Code Playgroud)

这有效:

short value;
value = "test" == "test" ? 5 : 10;
Run Code Online (Sandbox Code Playgroud)

这不起作用:

short value;
string str = "test";
value = "test" == str ? 5 : 10;
Run Code Online (Sandbox Code Playgroud)

这也不是:

short value;
string str = "test";
value = "test".Equals(str) ? 5 : 10;
Run Code Online (Sandbox Code Playgroud)

最后两种情况我收到以下错误:

Cannot implicitly convert type 'int' to 'short'.
An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)

为什么我必须对最后两个案例进行演绎而不是对前两个案例进行演绎?

.net c#

31
推荐指数
1
解决办法
1877
查看次数

c#比较字符串的最快方法

我注意到了

string1.Length == string2.Length && string1 == string2
Run Code Online (Sandbox Code Playgroud)

在大字符串上比稍微快一点

string1 == string2
Run Code Online (Sandbox Code Playgroud)

这是真的?在比较实际字符串之前比较大字符串长度是一种很好的做法吗?

c# string performance

19
推荐指数
4
解决办法
3万
查看次数

字符串比较:operator ==()vs. Equals()

可能重复:
C#:string.Equals()和==运算符是否真的相同?

对于字符串比较,哪种方法更好(和安全):

string s1="Sarfaraz";
string s2="Nawaz";

bool result1 = (s1==s2) ;//approach 1
bool result2 = s1.Equals(s2) ;//approach 2
Run Code Online (Sandbox Code Playgroud)

或两者在引擎盖下相同?

c# string equality

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

解析为布尔值或检查字符串值

如果我有一个变量从DB 中提取一串true或 哪一个false,
这将是检查其值的首选方法?

string value = "false";

if(Boolean.Parse(value)){
   DoStuff();
}
Run Code Online (Sandbox Code Playgroud)

我知道解析bool有不同的方式 - 这是一个例子

string value = "false";

if(value == "true"){
   DoStuff();
}
Run Code Online (Sandbox Code Playgroud)

我在数据库string格式中提取了很多真/假值,想知道这些方法是否会产生任何性能差异?

c# boolean

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

对象等于 - 对于不重写等于的纯对象或引用类型的基本逻辑是什么?

我在读完这篇文章之后来到这里并且没有找到相关的答案 - 所以在你阅读整个问题之前,请不要将其标记为副本.

我一直在使用反射器并进行调查.Object.Equals我看到的是:

[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public virtual bool Equals(object obj)
{
    return RuntimeHelpers.Equals(this, obj);
}
Run Code Online (Sandbox Code Playgroud)

而且RuntimeHelpers.Equals看起来是这样的:

// System.Runtime.CompilerServices.RuntimeHelpers
/// <summary>Determines whether the specified <see cref="T:System.Object" /> instances are considered equal.</summary>
/// <returns>true if the <paramref name="o1" /> parameter is the same instance as the <paramref name="o2" /> parameter, or if both are null, or if o1.Equals(o2) returns true; otherwise, false.</returns>
/// <param name="o1">The first object to …
Run Code Online (Sandbox Code Playgroud)

.net c#

11
推荐指数
2
解决办法
1012
查看次数

"stringDemo"与新字符串("stringDemo".ToCharArray);

请看下面的代码:

using System;
class MyClass
{
    static void Main()
    {
        object o = ".NET Framework";
        object o1 = new string(".NET Framework".ToCharArray());
        Console.WriteLine(o == o1);
        Console.WriteLine(o.Equals(o1));
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是:
False
True

现在考虑这个:

using System;
class MyClass
{
    static void Main()
    {
        object o = ".NET Framework";
        object o1 = ".NET Framework";
        Console.WriteLine(o == o1);
        Console.WriteLine(o.Equals(o1));
    }
}
Run Code Online (Sandbox Code Playgroud)

其结果是:


"=="比较对象引用是否相同,而".Equals()"比较内容是否相同.我想知道这些代码之间有什么不同?!

object o1 = new string(".NET Framework".ToCharArray());
Run Code Online (Sandbox Code Playgroud)

object o1 = ".NET Framework"; 
Run Code Online (Sandbox Code Playgroud)

他们两个都是一个对象,但为什么结果不同?

.net c# oop c#-4.0

9
推荐指数
1
解决办法
274
查看次数

标签 统计

c# ×9

.net ×6

string ×3

equals ×2

boolean ×1

c#-4.0 ×1

equality ×1

oop ×1

performance ×1