C# 字典扩展方法语法
C# Dictionary Extension method syntax
我正在尝试为字典编写一个扩展方法来缩短 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 中,它很可能是在非静态 class
中定义的
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>();
}
}
扩展方法必须可由调用者访问并且在静态 class.
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>();
}
}
我正在尝试为字典编写一个扩展方法来缩短 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 中,它很可能是在非静态 class
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>();
}
}
扩展方法必须可由调用者访问并且在静态 class.
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>();
}
}