我有这段代码:
public class Extension
{
Dictionary<string, string> exts = new Dictionary<string, string>();
public static void Add(string extcode, string desc)
{
exts.Add(extcode, desc);
}
public static void Del(string extcode)
{
if(exts.ContainsKey(extcode))
{
exts.Remove(extcode);
}
}
public static bool Exists(string extcode)
{
if(exts.ContainsKey(extcode))
{
return true;
}
if(!exts.ContainsKey(extcode))
{
return false;
}
}
}
问题是当我尝试在Add,Del和Exists类中使用exts Dictionary时,它说:
非静态字段,方法或属性“Filext.Extension.Ext”
需要对象引用
我想在每个函数中使用Dictionary方法,而无需创建新字典或克隆它。
我的想法是当我使用Extension.Add("aaa","description")
,Remove("aaa")
或Exists("aaa")
时,通过密钥在字典中添加或删除它。
答案 0 :(得分:3)
您的方法为Dictionary
,因此您的static
声明也应为private static Dictionary<string, string> exts = new Dictionary<string, string>();
。您不能在静态方法中使用类实例成员。
{{1}}
答案 1 :(得分:1)
问题是此类的方法是static
定义的。您有两个解决方案:更好的方法是通过在方法定义之前删除static
关键字来定义方法静态。最糟糕的解决方案是定义ext
字典static
。