【发布时间】:2020-08-01 18:51:53
【问题描述】:
我有一个整数类型的字典。当我使用 Nullable<int> 类型的属性之一填充我的类时,我想使用基于给定产品 ID 的字典中的值填充此属性。
当给定的产品 id 没有对应的值时,如何获得可为空的类型?
public class OrderLine
{
public int? AvailableQuantity { get; set; }
}
var selectedProductId = Guid.NewGuid();
var products = new Dictionary<Guid, int>
{
{ Guid.NewGuid(), 1 },
{ Guid.NewGuid(), 2 },
{ Guid.NewGuid(), 3 },
};
var result = new OrderLine
{
Id = Guid.NewGuid(),
ProductId = selectedProductId,
AvailableQuantity = products.GetValueOrDefault(selectedProductId, default)
};
上面的方法返回0而不是null
当我尝试时编译器无法编译
AvailableQuantity = products.GetValueOrDefault(selectedProductId, default(int?))
方法 'TValue 的类型参数 System.Collections.Generic.CollectionExtensions.GetValueOrDefault(这个 IReadOnlyDictionary, TKey, TValue)' 无法推断 从用法上。尝试明确指定类型参数。
我无法更改字典的类型。字典是一种广泛使用的方法的返回类型。这是我们需要处理产品 id 不能在该字典中的情况的第一种情况。
我想避免枚举字典以将其类型更改为可空
【问题讨论】:
标签: c# dictionary collections