【问题标题】:How to call a Class = new Class(); declare one time?如何调用一个类 = new Class();声明一次?
【发布时间】:2017-08-02 08:37:15
【问题描述】:

在 windows 窗体应用程序中我接到电话

  private Class1 c1;
  private void Print()
  {
            c1 = new Class1();
  }

但在下一个我不想声明新类,因为它为我的程序生成了错误的值并得到错误。 就像

  private void Print2()
  {
            c1 ; //**( I don't want to declare new one )**
  }

编辑 2 我想像你说的那样做,但我的代码中的参数就像

    public CandleCollection GetCandleCollection()
    {
        CandleCollection collection = null;
        try
        {
            collection = SymbolList[cbxSymbol.Text];
        }
        catch (Exception) { }
        return collection;
    }       
    private Class1 c1 = new Class1(<collection>);  **it's need to call collection**
    private void Print()
    {
            c1 = new Class1();
    }
    private void Print2()
    {
            c1 ; //**( I don't want to declare new one )**
    }

编辑 3 这是我调用 c1 的原始代码

    private void Print()
    {
        CandleCollection collection = GetCandleCollection();
        Class1 c1 = new Class1(collection);
    }

【问题讨论】:

  • private Class1 c1 = new Class1();?
  • 您想要实现的功能是什么?我不太明白...
  • 你到底有什么问题?
  • 确实希望它是单例的,然后将其设为道具并检查分配给属性的私有变量是否已启动,如果没有,则仅启动它。 stackoverflow.com/questions/2155688/what-is-a-singleton-in-c
  • 假设 Print() 和 Print2() 在同一个类中,您需要阅读 C# 中的属性。

标签: c# winforms class methods


【解决方案1】:

将您的CandleCollection 变量移出public 方法,以便您也可以在此方法之外使用它。

然后,您只能将Class1 变量实例化一次:

private CandleCollection collection = null;

public CandleCollection GetCandleCollection()
{
    try
    {
        collection = SymbolList[cbxSymbol.Text];
    }
    return collection;
}       
private Class1 c1 = new Class1(collection);
private void Print()
{
        c1;
}
private void Print2()
{
        c1;
}

【讨论】:

  • 我现在更新了帖子。我想像你说的那样做,但我的论点有问题
  • 据说“字段初始化器不能引用非静态字段、方法或属性”
  • 这意味着你的类是静态的。将变量也声明为静态的。
  • 可能是因为您有未处理的异常。将catch 添加到您的try 并查看异常情况。
  • 它现在可以工作,但 c1 值为 null 。我认为价值不加在 c1 中?
猜你喜欢
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 2012-05-27
  • 2019-04-20
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多