Класна функція. Я просто хочу зазначити акцент на тому, чому це краще, ніж string.format, якщо це деяким людям не видно.
Я читав, хто говорить, що замовити string.format до "{0} {1} {2}", щоб відповідати параметрам. Ви не змушені замовляти "{0} {1} {2}" у string.format, ви також можете робити "{2} {0} {1}". Однак якщо у вас дуже багато параметрів, наприклад 20, ви дійсно хочете послідовно виконати рядок до "{0} {1} {2} ... {19}". Якщо це безладний безлад, вам буде важко вишикувати свої параметри.
За допомогою $ ви можете додавати параметр вбудований параметр, не рахуючи своїх параметрів. Це значно полегшує читання та підтримку коду.
Недоліком $ є те, що ви не можете легко повторити параметр у рядку, вам потрібно його ввести. Наприклад, якщо вам набридло вводити System.Environment.NewLine, ви можете зробити string.format ("... {0} ... {0} ... {0}", System.Environment.NewLine), але в $ вам доведеться повторити. Ви не можете зробити $ "{0}" і передати його до string.format, оскільки $ "{0}" повертає "0".
У бічній записці я прочитав коментар в іншій дубльованій тпоїці. Я не міг коментувати, так ось ось. Він сказав це
string msg = n + " sheep, " + m + " chickens";
створює більше ніж один рядковий об'єкт. Це насправді не так. Якщо ви робите це в одному рядку, він створює лише один рядок і розміщується в кеш-рядках.
1) string + string + string + string;
2) string.format()
3) stringBuilder.ToString()
4) $""
Усі вони повертають рядок і створюють лише одне значення в кеші.
З іншої сторони:
string+= string2;
string+= string2;
string+= string2;
string+= string2;
Створює 4 різних значення в кеші, тому що є 4 ";".
Таким чином, буде простіше написати код на зразок наступного, але ви створили б п'ять інтерпольованих рядків, коли Карлос Муньос виправив:
string msg = $"Hello this is {myName}, " +
$"My phone number {myPhone}, " +
$"My email {myEmail}, " +
$"My address {myAddress}, and " +
$"My preference {myPreference}.";
Це створює одну єдину рядок у кеші, тоді як у вас дуже легко читати код. Я не впевнений у роботі, але впевнений, що MS оптимізуватиме її, якщо цього ще не зробить.