在 class 的静态方法中创建 class 的实例是否干净?

Is it clean to create an instance of a class inside a static method of that class?

我里面有一个非静态的 class 和一个静态的方法。到目前为止毫无疑问。但我在静态方法中创建了相同 class 的实例。我不确定它是否会创建循环引用。我 运行 它处于调试模式以查看任何意外行为,但看不到。不过,我想确认一下。在同一个 class 中的静态方法中创建一个 class 的实例是否可以?这是一个坏习惯吗?

public class DownloadHelper
{
    //fields, properties

    public DownloadHelper()
    {
        // some code
    }

    public async Task<bool> HttpCalls()
    {
        await Task.Delay(1000);
        return true;
    }

    public static async void GetPreparedInAdvance()
    {
        var helper = new DownloadHelper();
        var success = await helper.HttpCalls();
        // some more codes
    }
}

// Is it ok to call like this?
DownloadHelper.GetPreparedInAdvance();

// little later,
DownloadHelper.GetPreparedInAdvance();

没有问题,这段代码做的是常规的。

使用静态方法创建对象实例:

这是我所说的 static 运行 方法模式的变体*:

  • 它在每次调用时创建一个 class 的对象实例,或者如果是单例则可以是唯一的,
  • 它执行这个实例:显示一个表单,或者从网络下载一个文件,等等,
  • 它 returns 一个结果,或者不是:对话框或文件的结果,等等。

在这种模式下,构造函数通常是私有的以确保一致性。


*我还没学过标准design patterns