В чем разница между String.Format и Composite String в C #? - PullRequest
0 голосов
/ 15 сентября 2018

В чем разница между этими двумя синтаксисами?

Есть ли ситуации, когда нужно использовать String.Format вместо составной строки?

Console.WriteLine("{0:d} {0:t}",DateTime.Now);
Console.WriteLine(String.Format("{0:d} {0:t}",DateTime.Now));

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Я только что заметил ситуацию, когда нужно использовать String.Format или интерполированную строку вместо обычной составной строки.

SqlConnection myConnection = new SqlConnection("......");
SqlDataAdapter myDataAdapter1 = new SqlDataAdapter("SELECT userAddress FROM tblUserData WHERE userName = '" + userName + "'", myConnection);
SqlDataAdapter myDataAdapter2 = new SqlDataAdapter("SELECT userAddress FROM tblUserData WHERE userName = '{0}'", userName, myConnection);
SqlDataAdapter myDataAdapter3 = new SqlDataAdapter(String.Format("SELECT userAddress FROM tblUserData WHERE userName = '{0}'", userName), myConnection);
SqlDataAdapter myDataAdapter4 = new SqlDataAdapter($"SELECT userAddress FROM tblUserData WHERE userName = '{userName}'",myConnection);

myDataAdapter2 не работает из-за неверных параметров.

(Да, обычно инструкция SELECT присваивается строковой переменной.)

0 голосов
/ 15 сентября 2018

Между ними нет никакой разницы, потому что

Console.WriteLine("{0:d} {0:t}",DateTime.Now);

, которая вызовет функцию String.Format с помощью этой функции перегрузки.

public virtual void WriteLine(String format, Object arg0)
{
    WriteLine(String.Format(FormatProvider, format, arg0));
}

console.WriteLine Исходный код

...