【问题标题】:get current class instance [closed]获取当前类实例
【发布时间】:2014-01-27 13:37:39
【问题描述】:

你如何获得一个类的当前实例?

该类有搜索方法和取消方法。

代码示例:

if (btnSearch.Text =="Search")
{
    Searcher srch = new Searcher();
    srch.Search();
    btnSearch.Text = "Cancel";
    return;
}
if (btnSearch.Text == "Cancel")
{
    //call a method in the instance above for example
   srch.Cancel();
}

我只想在 btnSearch.Text =="Search"; 时创建实例当 btnSearch.Text =="Cancel";我想调用 srch.Cancel();

//// 感谢 nmclean,问题解决了,我不得不在更高的范围内声明 Search 类才能访问当前正在运行的实例。

【问题讨论】:

  • “上面的实例”是什么意思? Searcher的实例?
  • 你想从上面的范围调用srch的方法吗?
  • 请定义“类的当前实例”.. 你的意思是单例,或者服务定位器,或者......?
  • 没有“当前实例”这样的东西。如果有多个实例怎么办?如果有多个线程怎么办?
  • 我也不会依赖按钮的文本。相反,请保留“搜索中”标志。您也可以按照以下建议扩大srch 的范围,并使用srch != null 作为您的“正在搜索”标志。

标签: c# class instance


【解决方案1】:

您的srch 变量必须在比函数更高的范围内声明,否则它不会持续到下一次调用该函数。这很可能意味着它应该是类的一个字段:

class YourClass
{
    private Searcher srch;

    void YourMethod()
    {
        if (btnSearch.Text == "Search")
        {
            srch = new Searcher();
            srch.Search();
            btnSearch.Text = "Cancel";
            return;
        }
        if (btnSearch.Text == "Cancel")
        {
            srch.Cancel();
        }
    }
}

【讨论】:

  • 经过大量调试和试验后,这就像一个魅力。非常感谢,如果有任何混淆,请见谅。
猜你喜欢
  • 2011-12-22
  • 2023-03-26
  • 1970-01-01
  • 2023-03-04
  • 2013-09-07
  • 1970-01-01
  • 2023-02-14
  • 1970-01-01
相关资源
最近更新 更多