C#比较2个字符串相等,最快的方法是什么?

string str1="aaa";
string str2="aaa";

1.if(str1==str2){}
2.if(str1.Equals(str2)){}
看来大家看法不一样呀,有没有权威点的答案?

第一个方法快,运行下面程序可以证明:

string str1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
string str2 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
long t1 = System.DateTime.Now.Ticks;
for (long i = 0; i < 1000000; i++)
{
if (str1 == str2) { }
}
long t2 = System.DateTime.Now.Ticks;
for (long i = 0; i < 1000000; i++)
{
if (str1.Equals(str2)) { }
}
long t3 = System.DateTime.Now.Ticks;
MessageBox.Show("t2 - t1 = " + (t2 - t1) + " t3 - t2 = " + (t3 - t2));

t2 - t1 = 140000 t3 - t2 = 760000
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-14
第一个方法快,运行下面程序可以证明:
string
str1
=
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
string
str2
=
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
long
t1
=
System.DateTime.Now.Ticks;
for
(long
i
=
0;
i
<
1000000;
i++)
{
if
(str1
==
str2)
{
}
}
long
t2
=
System.DateTime.Now.Ticks;
for
(long
i
=
0;
i
<
1000000;
i++)
{
if
(str1.Equals(str2))
{
}
}
long
t3
=
System.DateTime.Now.Ticks;
...展开第一个方法快,运行下面程序可以证明:
string
str1
=
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
string
str2
=
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
long
t1
=
System.DateTime.Now.Ticks;
for
(long
i
=
0;
i
<
1000000;
i++)
{
if
(str1
==
str2)
{
}
}
long
t2
=
System.DateTime.Now.Ticks;
for
(long
i
=
0;
i
<
1000000;
i++)
{
if
(str1.Equals(str2))
{
}
}
long
t3
=
System.DateTime.Now.Ticks;
MessageBox.Show("t2
-
t1
=
"
+
(t2
-
t1)
+
"
t3
-
t2
=
"
+
(t3
-
t2));
t2
-
t1
=
140000
t3
-
t2
=
760000收起
第2个回答  2009-08-11
第一个好像是整体字符串比较
第二个好像是一个字符一个字符的比较吧

第一个好像要再开一个空间
第二个好像比第一个慢一些 但不用开空间了 貌似是这样
第3个回答  2009-08-08
第一个,第二个还要调用方法应该慢一些,第一个直接比较应该快一些。
第4个回答  2009-08-08
第二个,这样写而且能让别人觉得程序员很老练

怎么快速比较两个字符串中字符的相同个数
比较两个字符串是否相等,最常见的方法就是使用“===”来判断,至于它和“==”的区别,简单来说就是前者强调“identical”类型也要求一样;后者要求“equal”,值相同就可以了,参考【1】。或者使用strcmp来判断,但是这个能够告诉你两个字符串是否相等,但是无法告诉你在那里不同。我的思路是单字符串...

C#字符串比较方法
在C#中,String类提供了多种比较字符串的方法,其中两种最常用的是Compare和CompareTo。Compare(String, String)方法用于比较两个字符串,它返回一个整数以表示比较结果。若返回值小于0,说明第一个字符串(strA)小于第二个字符串(strB)。若返回值等于0,说明两个字符串相等。若返回值大于0,说明第一个...

C#中怎么判断2个字符串有多少个字符是相同的
public int Compare(string s1,string s2){ int count=0;\/*相同字符个数*\/ int n = s1.Length > s2.Length ? s2.Length : s1.Length;\/*获得较短的字符串的长度*\/ for (int i = 0; i < n; i++){ if (s1.Substring(i, 1) == s2.Substring(i, 1))\/*同位置字符是否相同*...

C#编写函数,找出两个字符串相同的部分
string str1 = "complexity";string str2 = "flexibility";int[,] num = new int[str1.Length, str2.Length];int maxLen = 0;int lastSubsBegin = 0;StringBuilder sequenceBuilder = new StringBuilder();for (int i = 0; i < str1.Length; i++){ for (int j = 0; j < str...

c#怎么比较2个汉字字符串里面有多少个相同的汉字
string a="无法访问服务器";string b="无法正常访问服务器";int i=0;foreach(char c in a){ if(b.IndexOf(c)>-1)i++;} i就是相同汉字数

c#怎么不分大小写比较两个字符串是否相等?
先转成小写,再比较 string s1="Abc";string s2="aBC";if(s1.ToLower()==s2.ToLower()){ \/\/不区分大小写,相等 }

四种C#对象的比较方式
对于String类型,C#使用特殊的Equals方法(即String.Equals方法)来比较两个字符串是否相等。这与普通类型的Equals方法不同,String.Equals方法会忽略大小写进行比较。与GetHashCode()的关系 GetHashCode方法用于生成一个整数哈希码。在比较对象时,如果两个对象具有相同的哈希码,则它们可能是相同的对象。但是...

在C#中怎么比较字符串是否相等
C#中比较字符串是否相等,是按照字符的ASCII码进行的,先比较第一个字符是否相等,然后是第二个第三个。。。,如果一个子串长度大于另一个字段,长度短的那个后面的字符按ASCII码为0与另一个字符串进行比较,所有符号都相等认为是字符串相等,使用==双等号这个逻辑运算符。

C#中关于判断字符串是否相等的问题
Compare确实是比较两个字符串是否相当。但是这里有个错误:sql是字符串,"操作员"也是字符串,这时候比较的是两者,按楼主的意思却不是比较这两个字符串,而是比较:通过sql从数据库提取出来的内容和"操作员"比较,显然这里没有实现。因此楼主需要到数据库执行这条sql语句,返回权限,然后比较 ...

在C# 中,可用 == 来比较两个字符串是否相等,为什么JAVA不可以_百度知 ...
所以使用==也可比较是否相等。但如果是new String("a")这样new出字符串对象时,即使内容完全一样,使用==比较也是false,因为==比较的是堆内存中的地址,所以只能是用equals()方法比较内容。C#可用 == 来比较两个字符串是否相等,其实底层也是使用了equals()方法来进行比较。

相似回答