使用StringBuilder获取C#中的常量字符串?

Pie*_*aki 0 c# string stringbuilder

在我当前的项目中,他们将每个SQL查询都放在“ QueryList”类中​​,每个查询都是一个不同的Get方法。我不明白的是,它们在这些方法中使用StringBuilder来构建常量字符串,在它们中没有使用任何操作或串联。当我对此提出疑问时,他们说,最好使用串联。据我所知,字符串文字的串联由编译器解决,对吗?编译器中是否对此类StringBuilder代码进行了优化?

我在Java中看到了类似的问题(用于常量的Stringbuilder),对于C#是否应该相同?

public static class QueryList
{
    private static StringBuilder GetQuery
    {
        get
        {
            StringBuilder query = new StringBuilder();

            query.Append(" INSERT INTO ");
            query.Append("  MyTable  ");
            query.Append("  (column1, column2)  ");
            query.Append(" VALUES ");
            query.Append("  (@val1 , @val2) ");

            return query;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在其中被称为

string query = QueryList.GetQuery.ToString();
Run Code Online (Sandbox Code Playgroud)

我进行了一些计数,大约有700种此类方法的调用,所有方法后面都带有“ .ToString();”。我知道在进行实际的字符串连接时会更好,但是只有34个需要它的调用。该程序每秒大约有200个查询。

Dmi*_*nko 6

如果要返回常量 string,请执行以下操作:

    // I've removed "Get" from the name
    private const string Query = 
      @"INSERT INTO MyTable (
          column1, 
          column2)
        VALUES (
          @val1, 
          @val2)";
Run Code Online (Sandbox Code Playgroud)

不需要 StringBuilder