我的程序看起来像下面。我想初始化一个存储功能的字典。但是,编译器不允许我这样做,如下所示。我得到错误

问题描述 投票:0回答:1
namespace FuncDictonaryTest { internal class Program { private Dictionary<Func<bool>, string> FunctionDictonary = new() { { TestA, "Hello" }, { TestB, "Byebye" }, // Not working }; private Dictionary<Func<bool>, string> FunctionDictonaryTwo; Program() { FunctionDictonaryTwo = new() // Working { { TestA, "Hello" }, { TestB, "Byebye" } }; } static void Main(string[] args) { Console.WriteLine("Hello World!"); } private bool TestA() { return true; } private bool TestB() { return false; } } }

	
您实际上应该在这里遇到两个错误,第二个解释了实际问题(

Demo

):

ERRORCS1921:“ program..testa()”的最佳超载方法匹配对初始化器元素的签名错误。最初的添加必须是可访问的实例方法。
c# function dictionary
1个回答
0
投票
如果您在字段初始化中更改为

TestA,则误差变得更加明显(demo

):

() => TestA()

ERRORCS0236:字段初始化器无法引用非静态字段,方法或属性'program.testa()' 错误CS0236:字段初始化器无法引用非静态字段,方法或属性'program.testb()'


您不能在字段/属性初始化器中使用非静态成员。
    
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.