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>
;我们知道 Dictionary
和 int
是 public
,所以检查 CachedSound
的访问修饰符并确保它不是 internal
或 private
。
我一直在做一个使用字典的项目,但我遇到了一个问题。
在我的一个 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>
;我们知道 Dictionary
和 int
是 public
,所以检查 CachedSound
的访问修饰符并确保它不是 internal
或 private
。