String.Format 和 C# 中的复合字符串有什么区别?
What is the difference between String.Format and Composite String in C#?
这两种语法有什么区别?
有没有必须使用String.Format而不是复合字符串的情况?
Console.WriteLine("{0:d} {0:t}",DateTime.Now);
Console.WriteLine(String.Format("{0:d} {0:t}",DateTime.Now));
它们之间没有任何区别,因为
Console.WriteLine("{0:d} {0:t}",DateTime.Now);
将通过此重载函数调用 String.Format
函数。
public virtual void WriteLine(String format, Object arg0)
{
WriteLine(String.Format(FormatProvider, format, arg0));
}
我刚刚注意到必须使用 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 语句被分配给一个字符串变量。)
这两种语法有什么区别?
有没有必须使用String.Format而不是复合字符串的情况?
Console.WriteLine("{0:d} {0:t}",DateTime.Now);
Console.WriteLine(String.Format("{0:d} {0:t}",DateTime.Now));
它们之间没有任何区别,因为
Console.WriteLine("{0:d} {0:t}",DateTime.Now);
将通过此重载函数调用 String.Format
函数。
public virtual void WriteLine(String format, Object arg0)
{
WriteLine(String.Format(FormatProvider, format, arg0));
}
我刚刚注意到必须使用 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 语句被分配给一个字符串变量。)