我正在尝试为字典编写扩展方法以缩短TryGetValue
语法。
这是扩展名,在常规方法中是完全相同的逻辑。
private static List<T> TryGet<T>(this Dictionary<int, List<T>> dict, int key)
{
return dict.TryGetValue(key, out var output) ? output : new List<T>();
}
private static List<T> TryGet<T>(Dictionary<int, List<T>> dict, int key)
{
return dict.TryGetValue(key, out var output) ? output : new List<T>();
}
var works = TryGet(MyDict, MyInt);
var doesntWork = MyDict.TryGet...
该代码根本找不到扩展名。我确保字典是相同的并且是正确的类型。
我将扩展代码与其他可用扩展名存储在文件中,所以这也不是问题。
扩展方法需要可以被调用方法访问,并且应该在static class
中定义。在OP中,很可能是在非静态类中定义的]
public static class Extensions
{
public static List<T> TryGet<T>(this Dictionary<int, List<T>> dict, int key) {
return dict.TryGetValue(key, out var output) ? output : new List<T>();
}
}
扩展方法必须可由调用者在静态类中访问。
public static class Extensions
{
public static List<T> TryGet<T>(this Dictionary<int, List<T>> dict, int key) {
return dict.TryGetValue(key, out var output) ? output : new List<T>();
}
}