Почему я не могу назначить конкатенацию константных строк константной строке? - PullRequest
5 голосов
/ 23 февраля 2011

Иногда я хочу разбить постоянную строку по причинам форматирования, обычно SQL.

const string SELECT_SQL = "SELECT Field1, Field2, Field3 FROM TABLE1 WHERE Field4 = ?";

до

const string SELECT_SQL = "SELECT Field1, Field2, Field3 " 
                        + "FROM TABLE1 " 
                        + "WHERE Field4 = ?";

Однако компилятор C # не позволяет этой второй форме бытьпостоянная строка.Почему?

1 Ответ

23 голосов
/ 23 февраля 2011

Хм, это должно быть хорошо ... ты уверен он не компилируется?

Пример кода:

using System;

class Test
{
    const string MyConstant = "Foo" + "Bar" + "Baz";

    static void Main()
    {
        Console.WriteLine(MyConstant);
    }
}

Я предполагаю, что в вашем реальном коде вы включаете в конкатенацию некоторые неконстантные выражения.

Например, это нормально:

const string MyField = "Field";
const string Sql = "SELECT " + MyField + " FROM TABLE";

но это не так:

static readonly string MyField = "Field";
const string Sql = "SELECT " + MyField + " FROM TABLE";

Это попытка использовать неконстантное выражение (MyField) в объявлении константного выражения - и это не разрешено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...