相关疑难解决方法(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()和==运算符是否真的相同?

他们真的一样吗?今天,我遇到了这个问题.这是立即窗口的转储:

?s 
"Category" 
?tvi.Header 
"Category" 
?s == tvi.Header 
false 
?s.Equals(tvi.Header) 
true 
?s == tvi.Header.ToString() 
true 
Run Code Online (Sandbox Code Playgroud)

所以,无论是stvi.Header包含"类别",而是==返回false,并Equals()返回true.

s被定义为字符串,tvi.Header实际上是一个WPF TreeViewItem.Header.那么,他们为什么会回归不同的结果呢?我一直认为它们可以在C#中互换.

任何人都可以解释为什么会这样吗?

c# string

224
推荐指数
5
解决办法
25万
查看次数

Object ==等式失败,但.Equals成功.这有意义吗?

可能重复:
C#中==运算符和Equals()方法之间的差异?

两种形式的平等,第一种失败,第二次失败.

(object)"abc" == (object)"abc"
false

((object)"abc").Equals((object)"abc")
true
Run Code Online (Sandbox Code Playgroud)

在下面的参考文献中,我们看到"C#中的等式运算符不是多态的"

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

顺便说一句:仍然不确定为什么这是一个问题.我认为它可能是这样的,但不是因为这个测试成功了.

    static void Main(string[] args) {
        var o = new classOfT<string>() { val = "abc" };
        Console.WriteLine((object)o.val == "abc");
    }

    public class classOfT<T> {
        public string val { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我不同意这个问题的完全重复规则,但是嘿.

答案说明:

... String类包含静态bool Equals(字符串a,字符串b)方法和静态bool Equals(对象a,对象b)方法.不同之处在于前者是在String类本身中定义的,而后者是从Object类继承的(它是String的基类)

在语义上这是有道理的,但它在OO和C#语言的更广泛的上下文中是否有意义?

为什么我要烦恼这个问题?好吧,刚刚发现了一个错误,我想在我的大脑中以韵律或理由而不是在"只记得这个"的情况下将其归档,它会在类别之前咬你.

更新:

目前正在考虑使用原语(从功能角度来看)Vs多态性.因为我一直在做越来越多的功能性的东西,这可能是为什么母语让我感到困惑.我还没有想到这一点(不,我不是务实.我被语言设计所吸引).感谢您的回复!

.net c#

13
推荐指数
1
解决办法
1256
查看次数

使用==或.Equals()进行bool比较

我正在审查一些代码,我发现了一些看起来像这样的东西:

public class MyClass
{
    public bool IsEditable { get; set; }

    public void HandleInput()
    {
        if (IsEditable.Equals(false))
        {
            //do stuff
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,它(IsEditable.Equals(false))是相同的(IsEditable == false)(也是相同的(!IsEditable)).

除了个人喜好,有没有在所有的有什么区别.Equals()==,用于比较特别是当bool小号

c#

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

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

我有覆盖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
查看次数

'=='vs string.equals c#.net

可能重复:
C#:String.Equals vs. ==

大家好.

有段时间有人告诉我,你永远不应该将字符串与==进行比较,并且你应该使用string.equals(),但它指的是java.

¿.NET c#中的差异beteen ==和string.equals是什么?

.net c# equals-operator

6
推荐指数
1
解决办法
6426
查看次数

使用实体框架asp.net mvc登录进程

我想在我的项目中登录密码验证.当用户点击登录按钮时,编译器转到此方法

public ActionResult VerifyPassword(User user)
{
    var givenPassword =user.Password;
    var givenUserName=user.UserName;
//now i need compare password 
    var myUser=db.User.Find(somevalue)//find user from database,
    But how can i do this????Because somevalue needs to be a Primary Key

}
Run Code Online (Sandbox Code Playgroud)

如果我做错了什么.请指出我正确的方向我在网上搜索了很多.但没有找到使用实体框架完成此任务的教程.

c# asp.net-mvc entity-framework

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

if语句出错 - 无法将类型隐式转换为'bool'

我有转换类型的问题.我正在尝试这样的代码(最小的,详细的代码):

string cityType = "City1";
int listingsToSearch = 42;
if (cityType = "City1") // <-- error on this line
{
    listingsToSearch = 1;
}
Run Code Online (Sandbox Code Playgroud)

但"如果"声明转换城市,但我一直得到:

不能隐式地将类型'string'转换为'bool'


我想要实现的目标:我有一个搜索引擎,其中包含搜索文本的文本框和搜索位置的两个单选按钮(IE City1或City2)

当我收到搜索文本和单选按钮时,它们是一个字符串的形式

string thesearchtext, thecitytype;
thesearchtext = HttpContext.Current.Request.QueryString["s"].ToString();
thecitytype = HttpContext.Current.Request.QueryString["bt"].ToString();
Run Code Online (Sandbox Code Playgroud)

当我收到城市单选按钮时,它们将采用"city1"或"city2"的格式.

我需要做的是将城市radiobuttons转换为int,以便我可以在我的搜索数据集中使用它们.我需要转换"city"为整数1"city2"整数2.

我知道这可能是一个简单的类型转换,但我无法理解.到目前为止,代码if给出了上面的错误:

int listingsToSearch;
if (thecitytype = "City1")
{
    listingsToSearch = Convert.ToInt32(1);
}
else
{
    listingsToSearch = Convert.ToInt32(2);
}
Run Code Online (Sandbox Code Playgroud)

c# types casting if-statement

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

检查对象列表中的属性对于所有项目是否都相同

这个问题与这个 C# 问题非常相似,但我想知道它们是否都彼此相同,无论该值是什么,而不是它们都等于特定的已知值。

我的列表包含许多对象,例如:

public MyClass {
    public int Id { get; set; }
    public string MyProperty { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我最初的方法是:

List<MyClass> MyList = new List<MyClass>();
//... Add some values

string firstResult = MyList.First().MyProperty;
return MyList.All(x => x.MyProperty.Equals(firstResult))
Run Code Online (Sandbox Code Playgroud)

但我觉得有更优雅的方法来做到这一点吗?

c# linq

4
推荐指数
1
解决办法
3528
查看次数

比较字符串的最佳做法

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

我知道在c#中你可以将字符串与==和equals进行比较,但我想知道根据最佳实践我需要使用什么.请注意,我需要知道String和string是否相同

c#

3
推荐指数
1
解决办法
5009
查看次数