正确的bool定义为非可空操作符

Ale*_*erK 0 c#

var account = new TRANSPORT_TO_ACCOUNT
{
    TransportLayerId = reader["ID"] as string,
    ...
    BLOCKED = reader["BLOCKED"] as bool,
};
accounts.Add(account);
Run Code Online (Sandbox Code Playgroud)

我有这个代码的问题.

as运算符必须与引用类型或可空类型一起使用('bool'是不可为空的值类型)

BLOCKED在这种情况下我应该如何正确宣布?

Pat*_*man 5

如果您确定该属性是a bool,那么只需将其强制转换:

var account = new TRANSPORT_TO_ACCOUNT
              { TransportLayerId = (string)reader["ID"]
              , BLOCKED = (bool)reader["BLOCKED"]
              };

accounts.Add(account);
Run Code Online (Sandbox Code Playgroud)

或者,如果您不确定是否有值:

, BLOCKED = (bool?)reader["BLOCKED"]
Run Code Online (Sandbox Code Playgroud)

或者如果你甚至不确定它是(可空的)布尔字段:

, BLOCKED = reader["BLOCKED"] as bool?
Run Code Online (Sandbox Code Playgroud)

如果读者是一个DbDataReader,你可以使用GetBoolean,正如Rene Vogt建议的那样.

作为旁注:您应该遵循命名约定.属性和类应该是驼峰的情况,所以它将是BlockedTransportToAccount.