我的控制器中的非静态字段、方法或属性需要对象引用需要对象引用我有一个非静态的字段:privateIDictionary_mappings=newDictionary(StringComparer.InvariantCultureIgnoreCase)我想在这样的操作中使用:publicstaticstringGetMimeType(stringextension){//...return_mappings.TryGetValue(extension,outmime)?mime:“应用程序/八位字节流”;}编译器抱怨:返回语句中的非静态字段、方法或属性需要对象引用。我怎样才能引用这个字段?您不能从静态成员访问实例成员,因此您有两个选择。使方法成为实例方法(删除static关键字)使字段静态(添加static关键字)您选择哪一个取决于该字段是否应在所有实例之间共享。我认为编译器在这里非常清楚:您的GetMimeType方法是静态方法,但_mappings变量未声明为静态(不是静态或实例字段/变量)。如果你想使用上面显示的映射变量,请执行:privatestaticIDictionary_mappings=newDictionary(StringComparer.InvariantCultureIgnoreCase)编辑:正如评论者指出的那样,你必须小心,这实际上是你想要的行为。静态成员意味着所有实例将共享相同的映射变量,并且可以覆盖现有数据。如果你想每个类都有一个映射变量,那么你应该将方法更改为实例方法(通过删除static关键字),如上面的答案中所述。如果您只想要一个只填充一次且之后永不修改的值字典,您可以做的是将字典设为静态并在静态构造函数中填充它。以上是C#学习教程:我的控制器中的非静态字段、方法或属性需要对象引用才能共享所有内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
