手动管理数据库连接时,始终打开和关闭它.有时您需要在执行某些操作之前检查连接是否具有某种状态.经典情况是在关闭连接之前检查未关闭状态.就像是
if (connection.State != ConnectionState.Closed)
connnection.Close();
Run Code Online (Sandbox Code Playgroud)
由于MSDN声明ConnectionState是枚举WITH FLAGS.这意味着连接状态可以同时具有不同的状态.可能会被打破+关闭或其他...
如果您反编译System.Data.ConnectionState枚举,您将看到
[Flags]
public enum ConnectionState
{
Closed = 0,
Open = 1,
Connecting = 2,
Executing = 4,
Fetching = 8,
Broken = 16,
}
Run Code Online (Sandbox Code Playgroud)
Closed项的值为ZERO.这意味着以下总是如此:
connection.State.HasFlag(ConnectionState.Closed)
Run Code Online (Sandbox Code Playgroud)
所以.有什么建议为什么这个枚举有Flags属性?或者(如果此枚举必须是Flags)为什么Closed项具有0值?