gpt4 book ai didi

C#:如何在类之间共享类的实例?

转载 作者:行者123 更新时间:2023-11-30 19:35:34 24 4
gpt4 key购买 nike

我的 Windows 窗体应用程序中有多个窗体实例,我在加载主窗体时对其进行实例化(包括主窗体本身的一个实例)。我希望它们在类(class)之间共享,这样我就可以在任何地方使用它们。我还需要通过这些实例来使用每个类的成员。

请注意,我对它的工作原理感到很困惑。我不知道我应该如何声明我的表单实例,但我只想要每个实例一个,这样我就可以使用 .Hide() 方法并使用每个表单/类的成员。

我已经尝试将实例作为属性,但我不确定如何进行。我不确定这是否正确。

    // get and set for form instances
public Menu menu { get; set; }
public RandomFacts randomFacts { get; set; }
public QuizMenu qm { get; set; }
public AskHowManyQuestions ahmq { get; set; }

// in the main form load method
menu = new Menu();
randomFacts = new RandomFacts();
qm = new QuizMenu();
ahmq = new AskHowManyQuestions();

该代码都在同一个“主”表单中。

我希望你能帮助我能够全局访问这些实例并帮助我解决这个问题。感谢您阅读我的问题。

最佳答案

简单的例子:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{

public static void Main()
{

var NewClassInstance = Singleton.GetSingleton().NewClassInstance;
Singleton.GetSingleton().NewClassInstance.Method();
var OtherClassInstance = Singleton.GetSingleton().OtherClassInstance;
var Proparty = OtherClassInstance.Name;
}
}



public class Singleton
{
public NewClass NewClassInstance {get; private set;}
public OtherClass OtherClassInstance {get; private set;}


private static readonly NewClass _newClass = new NewClass();
private static readonly OtherClass _otherClass = new OtherClass();
private static readonly Singleton _singleton = new Singleton();
private Singleton()
{
NewClassInstance = _newClass;
OtherClassInstance = _otherClass;
// Prevent outside instantiation
}

public static Singleton GetSingleton()
{
return _singleton;
}
}

public class NewClass
{
public NewClass()
{
}

public void Method()
{
}
}


public class OtherClass
{
public string Name {get; set;}

public OtherClass()
{
}
}

你可以访问这个实例做

Singleton.GetSingleton();

再举一个例子https://dotnetfiddle.net/C1PB05

关于C#:如何在类之间共享类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com