public abstract class Parser
{
protected List<string> Tables { get; set; }
protected string TableName { get; }
public List<List<object>> Table { get; protected set; }
public Parser()
{
Tables = GetListOfTables();
Program.PrintCollection(Tables);
TableName = Program.GetUserChoose(Tables);
Table = GetTable();
}
protected abstract List<string> GetListOfTables();
protected abstract List<List<object>> GetTable();
}
在构造函数中或直接在属性设置器中为属性赋值的正确方法是什么?在我看来,立即在属性中更合乎逻辑,但您也可以在构造函数中设置它。也许有一些潜规则?查看内置类的描述,并没有发现很多立即设置属性的情况。
没有设置属性值的“正确方法”。
在构造函数中,可以设置初始值。大多数情况下,这在通过参数传递值时很方便。如果你有很多属性,那么将所有内容都传递给构造函数是不方便的,那么将构造函数留空并直接设置属性更符合逻辑。
我同意@iiKuzmychov 的回答,但不完全同意。有时有些类没有任何数据就没有意义,以及构造函数优于
set调用此构造函数中的任何方法的优势(这是非常不可取的,但仍然如此)。除了调用一些东西来检查数据有效性之外,在构造函数中也比在构造函数中更好set,因为你必须这样做backing field(你可以通过签入和构造函数自己看到代码的可读性set)。构造函数的目的是初始化一个对象,仅此而已。C# 9 添加了
init属性,它的工作方式如下: