C# 如何从泛型函数中检索值类型值?
我有一个通用函数,用于从sqlite数据库检索键值对值 函数签名为:C# 如何从泛型函数中检索值类型值?,c#,C#,我有一个通用函数,用于从sqlite数据库检索键值对值 函数签名为: T Retrieve<T>(string key); T检索(字符串键); 每当数据库中不存在密钥时,我想返回null。我可以使用此签名对引用类型执行此操作,但不能使用值类型 我可以将签名更改为对象检索(字符串键)然后将其转换为typeT,但我想知道是否还有其他更好的方法来实现这一点。这里有一些竞争因素: 常规值类型不能为null Nullable可以是null,但那将是T?Retrieve(字符串键),其中
T Retrieve<T>(string key);
T检索(字符串键);
每当数据库中不存在密钥时,我想返回null
。我可以使用此签名对引用类型
执行此操作,但不能使用值类型
我可以将签名更改为
对象检索(字符串键)
然后将其转换为typeT
,但我想知道是否还有其他更好的方法来实现这一点。这里有一些竞争因素:
- 常规值类型不能为
null
可以是Nullable
,但那将是null
,这将使您无法使用T?Retrieve(字符串键),其中T:struct
,这似乎是一个可能的用例Retrieve(…)
bool TryRetrieve<T>(string key, out T value);
T Retrieve<T>(string key, out bool isNull);
(T value, bool isNull) Retrieve<T>(string key);
其中asout
参数不适用于大多数async
场景
async Task<(T value, bool isNull)> RetrieveAsync<T>(string key);