我有Form1
的单一模式:
private Form1()
{
InitializeComponent();
}
private static Form1 _Instance;
public static Form1 Instance
{
get
{
if (_Instance == null)
_Instance = new Form1();
return _Instance;
}
}
另外,我有下一个以主窗体Form1
声明的类:
public class Question
{
public Question(string q_text, Dictionary<string, bool> ans)
{
text = q_text;
answers = ans;
}
public string text { get; set; }
public Dictionary<string, bool> answers { get; set; }
}
但是,当我在表单EditQuestions
中想要声明这样的字典:Dictionary<int, Form1.Instance.Question> quest = quest = Form1.Instance.questions;
时,它会强调Question
。要点是在Form1中我有一些问题。以EditQuestions
形式,我想编辑问题。在Dictionary<int, Question> questions
我保存了这些问题。我认为我可以用EditQuestions
形式编辑问题,然后将编辑后的字典分配到Dictionary<int,Question> questions
Form1
答案 0 :(得分:0)
问题在于字典的定义。
Dictionary<int, Form1.Instance.Question> quest
在这里,您实际上是在询问对Form1的问题成员的引用,但Form1没有名为Question的成员。 Form1具有的是嵌套类型的问题。对于Dictionary的定义,您需要一个Type而不是一个对象引用。
将您的词典更改为此,它应该可以正常工作
Dictionary<string, Form1.Question> quest
此外,如果您使用的是.NET 4或更高版本,创建单例的更简洁和更安全的方法是使用Lazy类,如此
private static readonly Lazy<Form1> SingletonInstance = new Lazy<Form1>(() => new Form1());
private Form1()
{
}
public static Form1 Instance
{
get { return SingletonInstance.Value; }
}