【发布时间】:2011-02-22 21:28:04
【问题描述】:
在我的几乎所有课程中,我都有属性和内部类变量的混合。我总是按照“property if you need it in external, class variable if not”的规则选择其中一个。但还有许多其他问题让我经常重新思考这一点,例如:
-
1234563内部变量属性以防万一我必须从外部访问它们,因为无论如何大多数类都是内部类它不会在 API 上公开,因此内部变量是否可以从外部访问并不重要上课与否
但是由于 C# 不允许您实例化,例如
List<string>定义中的属性,那么这些属性必须在每个可能的构造函数中初始化,所以这些变量我宁愿有内部变量,只是为了让事情更清晰,因为它们都在一个地方初始化如果构造函数/方法参数是驼峰式大小写,并且您将它们分配给帕斯卡大小写属性,而不是看到
templateIdCode并且必须环顾四周以查看如果是局部变量、方法参数或内部类变量,例如当您看到TemplateIdCode = templateIdCode这是分配给类属性的参数时,会更容易。这将是始终仅在内部类上使用属性的论据。
例如:
public class TextFile
{
private string templateIdCode;
private string absoluteTemplatePathAndFileName;
private string absoluteOutputDirectory;
private List<string> listItems = new List<string>();
public string Content { get; set; }
public List<string> ReportItems { get; set; }
public TextFile(string templateIdCode)
{
this.templateIdCode = templateIdCode;
ReportItems = new List<string>();
Initialize();
}
...
在创建内部(非 API)类时,您有什么策略来决定是应该创建内部类变量还是属性?
【问题讨论】:
-
您的代码 sn-p 的一些问题对您的问题没有帮助:该类是公共的,而不是内部的。 ReportItems 应该有一个私有的设置器。这本身就非常有利于财产。
标签: c# properties conventions class-variables