有时我想分解一个常量字符串,原因是格式化,通常是SQL.
const string SELECT_SQL = "SELECT Field1, Field2, Field3 FROM TABLE1 WHERE Field4 = ?";
Run Code Online (Sandbox Code Playgroud)
至
const string SELECT_SQL = "SELECT Field1, Field2, Field3 "
+ "FROM TABLE1 "
+ "WHERE Field4 = ?";
Run Code Online (Sandbox Code Playgroud)
但是,C#编译器不允许第二种形式为常量字符串.为什么?
Jon*_*eet 23
嗯,那应该没事......你确定它不会编译吗?
示例代码:
using System;
class Test
{
const string MyConstant = "Foo" + "Bar" + "Baz";
static void Main()
{
Console.WriteLine(MyConstant);
}
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是,在你的真实代码中,你在连接中包含了一些非常量表达式.
例如,这很好:
const string MyField = "Field";
const string Sql = "SELECT " + MyField + " FROM TABLE";
Run Code Online (Sandbox Code Playgroud)
但这不是:
static readonly string MyField = "Field";
const string Sql = "SELECT " + MyField + " FROM TABLE";
Run Code Online (Sandbox Code Playgroud)
这试图使用非恒定表达(MyField常量表达式声明内) -而这不是允许的.