C# 通用,在相等性检查期间,有时需要检查类型和值

C# 通用,在相等性检查期间,有时需要检查类型和值,c#,C#,正如C#一样,当你声明变量时,你会声明类型,你不会不知道变量类型是什么。此外,CLR for C#在允许的类型转换方面非常严格,要进行此类类型转换,必须显式转换。所有这些都使得严格的相等运算符在很大程度上是多余的 在决策结构(如循环)中,不会使用赋值运算符。通常情况下,当您进行这些检查时,您已经定义了变量并填充了数据,您将使用相等运算符(以及其他运算符)。您在学习C#时使用的是哪本书?这应该在第一章或第二章中讨论。对不起,我不能告诉你这本书的名字,这就像冒犯了作者:)。令人遗憾的是,本书没有很好

正如C#一样,当你声明变量时,你会声明类型,你不会不知道变量类型是什么。此外,CLR for C#在允许的类型转换方面非常严格,要进行此类类型转换,必须显式转换。所有这些都使得严格的相等运算符在很大程度上是多余的


在决策结构(如循环)中,不会使用赋值运算符。通常情况下,当您进行这些检查时,您已经定义了变量并填充了数据,您将使用相等运算符(以及其他运算符)。

您在学习C#时使用的是哪本书?这应该在第一章或第二章中讨论。对不起,我不能告诉你这本书的名字,这就像冒犯了作者:)。令人遗憾的是,本书没有很好地解释一些例子:(@subanki:如果你对这本书的看法那么糟糕,那就换一本。浪费时间从一本你都认为很糟糕会让作者难堪的书上学习一门语言有什么意义呢?请看,还有一些建议。@Cody这本书非常简单易懂,但有几个例子没有解释清楚。此外我两天前刚买了这本书。@subanki:这很好:这意味着你在这本书上没有浪费太多时间。如果简单的例子解释得不好,你能对更复杂的东西有什么期待吗?我怀疑它只会变得更糟。还有其他简单的书,很容易理解我链接的问题为新程序员而不是专家推荐书籍。因此,如果我这样使用它………如果(I=5){x=10;}……在这种情况下,I被赋值为值5?C#足够聪明,可以在您尝试编译代码时警告您。应该是如果(I=5){x=10;}编辑:澄清无警告只是一个错误,将计算i=5,将为i赋值5并返回5,因为5不是布尔值(真/假)if语句是非法的,您将得到一个编译错误。C#不会编译它,因为i=6不会对布尔表达式求值。即使是这样,在if条件块内赋值一个变量是错误的样式,应该避免。+1、@Viktor是的,将显示编译错误,程序将不会执行。+1用于显示严格相等和对象标识之间的区别。非常确定您的意思是:if(typeof obj==='undefined'){alert(“obj已升华”);}--根据定义,您的示例返回一个引用error@Carnix是的,您是正确的,
(对象的类型=='undefined')
是使用它的最佳方式。而且,多年来我一直在发布这个答案:-D,直到今天我学到了比2011年更多的东西。
String myString = "Hi There";
if (5 == 5)
{
    do something
}
var i = 5;
if(i == 6){...}
int a=2;
int b=3;    
int c=a=b; // a, b, c is equal to 3 as b=3
int a=2;
int b=3;

bool c= a==b // c = false since result of a==b is false
object a = Guid.NewGuid();
object b = new Guid(""+a);
a == b // false -- uses object.== -- an *identity* compare
object a = Guid.NewGuid();
object b = new Guid(""+a);
a.Equals(b) // true -- uses Guid.Equals
// compile-time error: Operator '==' cannot be applied to operands of type 'T' and 'T'
bool equals<T> (T a, T b) { return a == b; }

// fair-game, because object defines Equals and it's polymorphic to subtypes
bool equals<T> (T a, T b) { return a.Equals(b); }
bool trippleEquals (object a, object b) {
  return a.GetType() == b.GetType() && a.Equals(b);
}
   object Object1;
   object Object2;  
   var v1 = Object1;
   var v2 = Object2;
   if (v1 != v2)
   {
     // Do something
   }
   object Object1;
   object Object2;  
   var v1 = Object1;
   var v2 = Object2;
   if (!v1.Equals(v2))
   {
     // Do something
   }
int abc;
abc = 5;
Console.WriteLine("Print: " + abc);
*Console Output* Print: 5
int abc = 5;
int xyz = 10; //Notice the use of a single equal sign to assign the values
if (abc == xyz)
{
    Console.WriteLine("The values are equal");
}
else
{
    Console.WriteLine("The values are not equal");
}
*Console Output* The values are not equal
double abc = 5;
int xyz = 5;
if (abc === xyz)
{
    Console.WriteLine("The values and variable types are equal");
}
*Console Output* Error