2021-01-19:mysql中,一张表里有3亿数据,未分表,其中一个字段是企业类型,企业类型是一般企业和个体户,个体户的数据量差不多占50%,根据条件把个体户的行都删掉。请问如何操作?#福大大架构师每日一题#
将对象引用与字符串进行比较时(即使对象引用是指字符串),==特定于字符串类的运算符的特殊行为也会被忽略。
通常(不处理字符串时),Equals比较值,同时==比较对象引用。如果你正在比较的两个对象是指同一个对象的确切实例,那么两者都将返回true,但是如果一个具有相同的内容并且来自不同的源(是具有相同数据的单独实例),则只有Equals会返回true。但是,正如注释中所指出的那样,字符串是一种特殊情况,因为它覆盖了==操作符,所以当纯粹处理字符串引用(而不是对象引用)时,即使它们是单独的实例,也只会比较这些值。以下代码说明了行为中的细微差别:
string s1 = "test";
string s2 = "test";
string s3 = "test1".Substring(0, 4);
object s4 = s3;
Console.WriteLine("{0} {1} {2}", object.ReferenceEquals(s1, s2), s1 == s2, s1.Equals(s2));
Console.WriteLine("{0} {1} {2}", object.ReferenceEquals(s1, s3), s1 == s3, s1.Equals(s3));
Console.WriteLine("{0} {1} {2}", object.ReferenceEquals(s1, s4), s1 == s4, s1.Equals(s4));
输出是:
True True True
False True True
False False True
当==用于表达式类型时object,它将解析为System.Object.ReferenceEquals。
Equals只是一种virtual方法,并表现如此,所以被覆盖的版本将被使用(其中,string类型比较的内容)。