当前位置: 首页 > 编程语言 > C#

“字段初始值设定项不能引用非静态字段”在C#中是什么意思?分享

时间:2023-04-10 19:33:39 C#

C#中“字段初始值设定项不能引用非静态字段”是什么意思?我不明白C#错误CS0236中的这个错误:字段初始值设定项无法为以下代码引用非静态字段、方法或属性“Prv.DB.getUserName(long)”publicclassMyDictionary{publicdelegateVNonExistentKey(Kk);不存在的键不存在的键;publicMyDictionary(NonExistentKeynonExistentKey_){}}classDB{SQLiteConnection连接;SQLiteCommand命令;MyDictionaryusernameDict=newMyDictionary(getUserName);stringgetUserName(longuserId){}}在构造函数之外使用的任何对象初始化器必须全部引用静态成员,因为实例在构造函数运行之前尚未构造,并且直接变量初始化在概念上发生在任何构造函数运行之前。getUserName是实例方法,但包含的实例不可用。要修复它,请尝试将usernameDict初始值设定项放入构造函数中。下面的链接可能会阐明为什么做你想做的事可能不是一件好事,尤其是第二个链接:为什么初始化程序以与构造函数相反的顺序运行?第1部分为什么初始化程序以与构造函数相反的顺序运行?第二部分getUserName是一个实例方法。将其更改为静态,这可能会起作用。或者在构造函数中初始化字典。您不能这样做,因为必须先初始化实例,然后才能访问其类的属性。字段初始值设定项在类初始化之前被调用。如果要用GetUserName-Method的返回值初始化字段usernameDict,则必须在构造函数中进行,或者将Method设为静态方法。以上是C#学习教程:C#中“字段初始化器不能引用非静态字段”是什么意思?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: