C# 访问来自不同 class 的字典

C# Access dictionary from different class

我一直在做一个使用字典的项目,但我遇到了一个问题。 在我的一个 wpf class (form) 中,我创建了一个字典,里面有一些东西。在我的第二个 class 中,我想从那个字典中读取,所以我将我的字典的修饰符设置为 'public'。这就是问题所在。我的字典给出错误:CS0050: Inconsistent accessibility: return type 'Dictionary<int, CachedSound>' is less accessible than field 'LoadAudioForm.noteValue'。你们有人知道如何解决这个问题吗?

这是我第一个 class:

代码的一部分
public partial class LoadAudioForm : Form
{
    public Dictionary<int, CachedSound> noteValue = new Dictionary<int, CachedSound>();

private void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        var worker = sender as BackgroundWorker;
        for (int i = 36; i < 97; i++)
        {
            noteValue.Add(i, new CachedSound("E:/VirtualCarillon/VirtualCarillon/VirtualCarillon/VirtualCarillon/Audio/01/" + i + ".wav"));
        }

现在是第二个 class:

AudioPlaybackEngine.Instance.PlaySound(LoadAudioForm.noteValue[ne.NoteNumber + (Convert.ToInt32(nVelR) * 100)]);

看起来您访问 dictionary 就像它是一个 static 变量,但它不是。

如果符合您的逻辑,您可以将 dictionary 更改为静态。

public static Dictionary<int, CachedSound> noteValue =
    new Dictionary<int, CachedSound>();

正如错误所说:字段的类型比字段本身更难访问。

字段是 public 所以字段的类型必须至少是 public 否则编译器会抱怨这种不一致。

您的代码中的字段类型是Dictionary<int, CachedSound>;我们知道 Dictionaryintpublic,所以检查 CachedSound 的访问修饰符并确保它不是 internalprivate