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

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

Console.WriteLine("{0:d} {0:t}",DateTime.Now);
Console.WriteLine(String.Format("{0:d} {0:t}",DateTime.Now));
1
user9807720 15 Сен 2018 в 16:36

2 ответа

Лучший ответ

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

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 Исходный код

3
D-Shih 15 Сен 2018 в 14:32

Я только что заметил ситуацию, когда нужно использовать 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
user9807720user9807720 18 Сен 2018 в 14:19