当我遇到一些奇怪的代码时,我正在浏览DbSet的内部:
private void CheckState()
{
// ReSharper disable once AssignmentIsFullyDiscarded
_ = EntityType;
}
注意_不会在他们使用新的C#7.0 Discard运算符的任何地方声明。为什么有人想做这样的事情?这样做有什么好处吗?
修改
private IEntityType EntityType
{
get
{
_context.CheckDisposed();
if (_entityType != null)
{
return _entityType;
}
_entityType = _context.Model.FindEntityType(typeof(TEntity));
if (_entityType == null)
{
throw new InvalidOperationException(CoreStrings.InvalidSetType(typeof(TEntity).ShortDisplayName()));
}
return _entityType;
}
}
答案 0 :(得分:2)
这看起来像是具有副作用的属性get
访问权限。您无法将属性分配给某个属性(或将其作为表达式传递)(对于get
),或为其分配内容(对于set
),您无法调用属性。他们不能只有:
EntityType;
他们所做的只是明确表示他们想要丢弃get
的结果,大概是为了避免使用未使用的变量警告。