[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
Використовуйте те, що ви і ваша команда вважаєте найбільш зручним для читання. Комусь подобається коротший варіант, комусь з використання класу.
З точки зору продуктивності та коду, що генерується, різниці справді немає. При тестуванні продуктивності, вони ходили туди-сюди між тим, хто з них швидший за інший, і лише на мілісекунди.
1 2 3 4 5 |
static void Main() { string s1 = ""; string s2 = String.Empty; } |
Якщо подивитися на код за сценою, то теж не видно жодної різниці. Єдина різниця – в IL, де string.Empty використовує опкод ldsfld, а “” – опкод ldstr, але це тільки тому, що string.Empty статична, і обидві інструкції роблять одне й те саме. Якщо ви подивитеся на створену збірку, вона буде точно такою ж.
Assembly code:
1 2 3 4 5 6 7 8 9 |
string s1 = ""; 00007FFBCC7996E3 mov rax,1F4B7802028h 00007FFBCC7996ED mov rax,qword ptr [rax] 00007FFBCC7996F0 mov qword ptr [rbp+28h],rax string s2 = String.Empty; 00007FFBCC7996F4 mov rax,1F4B7802028h 00007FFBCC7996FE mov rax,qword ptr [rax] 00007FFBCC799701 mov qword ptr [rbp+20h],rax |