Sar*_*els 7 c# resharper null nullable
我有以下代码:
private static LogLevel? _logLevel = null;
public static LogLevel LogLevel
{
get
{
if (!_logLevel.HasValue)
{
_logLevel = readLogLevelFromFile();
}
return _logLevel.Value;
}
}
private static LogLevel readLogLevelFromFile() { ... }
Run Code Online (Sandbox Code Playgroud)
我在return关于可能性的声明中得到了ReSharper警告System.InvalidOperationException,它建议我检查_logLevel它是否是null第一个.然而,readLogLevelFromFile回报LogLevel,没有LogLevel?,所以没有办法的return时候语句可以达成_logLevel的null.这只是ReSharper的疏忽,还是我错过了什么?
这看起来像是Resharper中的一个错误.
但请注意,这不是线程安全的.
执行此操作的最佳方法是使用静态初始化程序,如下所示:
public static LogLevel Instance { get { return Nested.level; } }
class Nested {
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested() { }
internal static readonly LogLevel level = readLogLevelFromFile();
}
Run Code Online (Sandbox Code Playgroud)