c# – 如何实现可返回class或nullable结构的泛型集合查找方法?
发布时间:2020-12-15 08:19:43 所属栏目:百科 来源:网络整理
导读:我想要一个异类查找辅助函数用于异构集合:它应该返回一个结构或类,如果找不到该项,则返回null. 下面是一个使用普通集合查找的示例,但它可能是数据库调用或其他任何内容. 有没有办法通过单一方法签名实现这一目标? public T GetClassT(string key) where T
我想要一个异类查找辅助函数用于异构集合:它应该返回一个结构或类,如果找不到该项,则返回null.
下面是一个使用普通集合查找的示例,但它可能是数据库调用或其他任何内容. 有没有办法通过单一方法签名实现这一目标? public T GetClass<T>(string key) where T : class { object o; if (Contents.TryGetValue(key,out o)) { return o as T; } return null; } public T? GetStruct<T>(string key) where T : struct { object o; if (Contents.TryGetValue(key,out o)) { if (o is T) { return (T?) o; } } return null; } 我已经尝试过的: >我理解通用限制不能用于消除重载的歧义.所以我不能简单地给这两个方法赋予相同的名称. 有没有办法表明我要返回一个盒装的int? 解决方法
以下方法适用于类和可空结构:
public static T GetValue<T>(string key) { object o; if (Contents.TryGetValue(key,out o)) { if (o is T) { return (T)o; } } return default(T); } 用法: int? result1 = GetValue<int?>("someInt"); string result2 = GetValue<string>("someString"); 注意怎么样?是泛型类型参数的一部分,并且不是由返回类型上的方法定义的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |