什么是Initialize方法,我真的需要一个吗?

Sam*_*tar 9 c# constructor initialization

Initialize对构造函数中通常使用的方法有点困惑.

为什么我不能把所有内容放在构造函数中,为什么下面的示例调用initialize方法?

    private IAzureTable<Product> _productRepository;

    public ProductService(string dataSourceID)
    {
        Initialize(dataSourceID);
    }

    private void Initialize(string dataSourceID)
    {
        this._productRepository = StorageHelper.GetTable<Product>(dataSourceID);
    }
Run Code Online (Sandbox Code Playgroud)

是否有通常使用的约定?

在这个例子中,我需要这个词thisInitialize方法是什么?

Mer*_*ham 11

为什么我不能把所有内容放在构造函数中,为什么下面的示例调用initialize方法?

你可以把它全部放在构造函数中.在这个简单的例子中,你应该.构造函数用于初始化对象.

有时你会遇到更复杂的事情:

  • 有时你会想要一个单独的Initialize方法,因为你想在一个单独的时间从构造中调用它.
  • 有时您需要一个,因为您正在编写多个构造函数,并且您希望在它们之间共享一些实现.
  • 有时您的初始化很复杂,并且您希望为它们提供好的名称,以便您知道代码在做什么.所以你把这些碎片分成了不同的方法.

这些代码都不是这种情况,所以我只是跳过它并将代码抛出到构造函数中.

是否有通常使用的约定?

不会.人们会做最容易阅读和理解的事情,无论需要编写最少的额外代码,以及什么导致代码重复最少.

但是,如果你将Initialize方法公之于众,而不是从构造函数中调用它,我强烈建议你调用它Initialize.将其设计为仅调用一次.

在这个例子中,我需要"this"这个词.在Initialize方法?

不可以.this除非您有另一个具有相同名称的本地变量,否则您永远不需要用来访问类成员.这是一个案例:

public class Something
{
    private string someValue;

    public class Something(string someValue)
    {
        // must use "this" to access the member variable,
        // because a local variable has the same name
        this.someValue = someValue;
    }
}
Run Code Online (Sandbox Code Playgroud)