У меня есть две строки
string str1 = "Привет всем";
string str2 = str1;
if(str1 == str2) {
}
За сколько операций делается проверка сравненияа и почему.
И за сколько вот эта.
string str1 = "Привет всем";
string str2 = "Привет всем";
if(str1 == str2) {
}
null
ом?PS: В коде из вопроса проверка закончится на шаге 1 в обоих случаях.
Оператор bool string
public static bool operator == (String a, String b) {
return String.Equals(a, b);
}
Метод Equals String
[Pure]
public static bool Equals(String a, String b) {
if ((Object)a==(Object)b) {
return true;
}
if ((Object)a==null || (Object)b==null) {
return false;
}
if (a.Length != b.Length)
return false;
return EqualsHelper(a, b);
}
Метод EqualsHelper String
[System.Security.SecuritySafeCritical] // auto-generated
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
private unsafe static bool EqualsHelper(String strA, String strB)
{
Contract.Requires(strA != null);
Contract.Requires(strB != null);
Contract.Requires(strA.Length == strB.Length);
int length = strA.Length;
fixed (char* ap = &strA.m_firstChar) fixed (char* bp = &strB.m_firstChar)
{
char* a = ap;
char* b = bp;
// unroll the loop
#if AMD64
// for AMD64 bit platform we unroll by 12 and
// check 3 qword at a time. This is less code
// than the 32 bit case and is shorter
// pathlength
while (length >= 12)
{
if (*(long*)a != *(long*)b) return false;
if (*(long*)(a+4) != *(long*)(b+4)) return false;
if (*(long*)(a+8) != *(long*)(b+8)) return false;
a += 12; b += 12; length -= 12;
}
#else
while (length >= 10)
{
if (*(int*)a != *(int*)b) return false;
if (*(int*)(a+2) != *(int*)(b+2)) return false;
if (*(int*)(a+4) != *(int*)(b+4)) return false;
if (*(int*)(a+6) != *(int*)(b+6)) return false;
if (*(int*)(a+8) != *(int*)(b+8)) return false;
a += 10; b += 10; length -= 10;
}
#endif
// This depends on the fact that the String objects are
// always zero terminated and that the terminating zero is not included
// in the length. For odd string sizes, the last compare will include
// the zero terminator.
while (length > 0)
{
if (*(int*)a != *(int*)b) break;
a += 2; b += 2; length -= 2;
}
return (length <= 0);
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется вращающийся глобус, где при наведении на определенные страны, те подсвечиваютсяПроблема в том, что мне надо, чтобы на задней части...
При изучении ES-2015 я наткнулся на деструктуризацию и мой пытливый ум решил поэкспериментировать
Появилась необходимость поддерживать IEИ я хочу удобный способ использовать шаблоны html кода