gpt4 book ai didi

c# - 何时使用属性以及何时在内部类上使用内部变量的策略?

转载 作者:行者123 更新时间:2023-11-30 12:53:06 26 4
gpt4 key购买 nike

在几乎所有的类中,我都有属性和内部类变量的混合。我总是根据“如果外部需要属性,如果不需要则为类变量”的规则来选择一个或另一个。但还有许多其他问题让我经常重新思考这一点,例如:

  • 在某些时候我想使用来自类外部的内部变量,所以我必须将它重构到一个属性中,这让我想知道为什么我不把我所有的内部变量属性,以防我无论如何都必须从外部访问它们,因为无论如何大多数类都是内部类它不会在 API 上公开,因此是否可以从外部访问内部变量并不重要上课与否

  • 但是由于 C# 不允许您实例化,例如List<string>定义中的属性,那么这些属性必须在每个可能的构造函数中初始化,所以这些变量我宁愿有内部变量只是为了让事情更清晰,因为它们都在一个地方初始化

  • 如果构造函数/方法参数是驼峰式大小写,并且您将它们分配给 pascal 大小写属性,而不是看到 templateIdCode歧义,C# 代码读起来会更清晰。并且必须环顾四周以查看它是局部变量、方法参数还是内部类变量,例如当你看到 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)类时,您在决定应该创建内部类变量还是属性时采用什么策略?

最佳答案

如果我有一个私有(private)变量,我发现以后需要公共(public)访问,我只需创建一个属性,将其用作私有(private)成员,例如:

private List<string> listItems = new List<string>();

Public List<string> ListItems
{
get{return listItems;}
set{listItems = value;}
}

这允许您创建对数据的公共(public)访问,而无需重构任何代码。它还允许您在私有(private)成员中初始化数据,而不必在构造函数中进行。
另一个优点是,您可以在属性的 getter 中为访问公共(public)属性的任何人执行对数据的任何修改。尽管 VS2008 引入了自动属性作为一项功能,但我仍然更喜欢 VS2005 风格的属性。

关于c# - 何时使用属性以及何时在内部类上使用内部变量的策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com