C# 委托对象错误

C# 委托对象错误,c#,dictionary,delegates,C#,Dictionary,Delegates,我对C#比较陌生,正在尝试学习如何从字典中调用委托。我使用的是您从未运行过程序()构造函数 因此,字典仍然是空的,TryGetValue()将out参数设置为nullSLaks试图以其典型的缩写方式说的是,程序的通常入口点是Main()函数,而不是类构造函数方法。在Main()函数中执行Add方法调用。OP似乎从实例构造函数向静态字典添加值。如果创建第二个实例,此操作将失败。将其更改为静态构造函数会更好您的测试程序已损坏,程序类构造函数不会运行,因为您从未创建过它的实例。将Dictionary.

我对C#比较陌生,正在尝试学习如何从
字典中调用
委托
。我使用的是
您从未运行过
程序()
构造函数


因此,字典仍然是空的,
TryGetValue()
out
参数设置为
null

SLaks试图以其典型的缩写方式说的是,程序的通常入口点是
Main()
函数,而不是类构造函数方法。在
Main()
函数中执行
Add
方法调用。OP似乎从实例构造函数向静态字典添加值。如果创建第二个实例,此操作将失败。将其更改为静态构造函数会更好您的测试程序已损坏,程序类构造函数不会运行,因为您从未创建过它的实例。将Dictionary.Add()语句移动到Main()中或使用静态构造函数。
namespace DelegatesHowTo
{
    class Program
    {
        protected delegate bool ModuleQuery(string parameter);

        static Dictionary<string, ModuleQuery> queryDictionary = new Dictionary<string, ModuleQuery>();

        public Program()
        {
            queryDictionary.Add("trustQuery", new ModuleQuery(queryTrustedStore));
            queryDictionary.Add("tokenQuery", new ModuleQuery(queryTokenStore));
        }

        static void Main(string[] args)
        {
            ModuleQuery MyQuery = new ModuleQuery(queryTrustedStore);
            queryDictionary.TryGetValue("trustQuery", out MyQuery);

            bool testQuery = MyQuery("TestTrusted");
            Console.WriteLine("Trusted: {0}", testQuery);
        }

        static bool queryTrustedStore(string parameter)
        {
            return parameter.Equals("TestTrusted");
        }

        static bool queryTokenStore(string parameter)
        {
            return parameter.Equals("TestToken");
        }
    }
}