首页 > 解决方案 > C#计数并列出另一个方法的字典对

问题描述

我有下面的代码,我需要找到字典的数量和所有对,但它属于另一个命名空间的方法:

using sys = System;
using gen = System.Collections.Generic;

namespace xtra
{
    class TestClass
    {
        public void Sing()
        {
            gen::Dictionary<string, int> dict = new gen::Dictionary<string, int>()
            {
                ["A"] = 1,
                ["B"] = 2,
                ["C"] = 3

            };
        }
    }
}



namespace ConsoleApp99
{
    class Program
    {
        static void Main(string[] args)
        {
            xtra.TestClass Joe = new xtra.TestClass();
            Joe.Sing();
            foreach (string name in Joe.Keys)  //error!
                sys.Console.WriteLine($"{name} {dict[name]}"); //error!
        }
    }
}

因此,方法 Sing 创建并填充字典,但是,在另一个命名空间(在 Main)中实例化时,我可以创建它,但是,我如何计算对并打印它们的值?我知道乔是一种制作字典的方法,但我不知道参考乔的字典..

标签: c#dictionary

解决方案


您需要将此字典定义为内部的公共属性TestClass,以便从不同的类/命名空间访问它:

namespace xtra
{
    class TestClass
    {
        public Dictionary<string, int> Dict { get; set; }

        public void Sing()
        {
            Dict = new Dictionary<string, int>()
            {
                ["A"] = 1,
                ["B"] = 2,
                ["C"] = 3

            };
        }
    }
}

namespace ConsoleApp99
{
    class Program
    {
        static void Main(string[] args)
        {
            xtra.TestClass Joe = new xtra.TestClass();
            Joe.Sing();
            foreach (string name in Joe.Dict.Keys)  //error!
                sys.Console.WriteLine($"{name} {Joe.Dict[name]}"); //error!
        }
    }
}

推荐阅读