c# - 两次调用同一个 C# 属性是不是不好的编程习惯?

标签 c# java methods properties

举个例子,我看过很多C#代码,比如下面这样:

XmlNode n = GetXmlNode();
String[] attributes = new String[n.Attributes.Count];
for (int x = 0; x < n.Attributes.Count; x++)
{
    //do something
}

现在,如果这是 java,我们可以编写类似于以下的代码,但是我们会调用 getAttributes() 方法两次,如果我没记错的话,有一条规则也就是说,与其多次调用同一个方法,不如声明一个变量来保存对方法调用返回的对象的引用,然后根据需要多次使用该变量。

Node n = GetXmlNode();
String[] attributes = new String[n.getAttributes().getLength()];
for (int x = 0; x < n.getAttributes().getLength(); x++)
{
    //do something
}

但既然C#属性只是封装在一个类型成员中的getter方法和setter方法,是否遵循同样的规则?

或者该规则不适用于这种情况,因为假设调用标准库中的 C# 属性和 Java get 方法只是返回对字段的引用而不是执行繁重的工作是“安全的”?

最佳答案

永远不要存储你可以计算的东西。当计算值发生变化但您仍在使用存储的值时,存储您可以计算的内容会导致细微的错误。只有当你的程序很慢时才违反这条规则,这是它慢的最大原因(提示:它可能不是)

关于c# - 两次调用同一个 C# 属性是不是不好的编程习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740606/

相关文章:

c# - 我如何在我的 child 中设置对 ForeignKey 的依赖

c# - 在 C# 中使用通配符获取动态生成文件的字符串?

Java:数组/方法:找不到符号

c# - Windows 8 XAMl C#向文本框添加水印?

c# - C# 中的异步方法不是异步的?

java - CipherOutputStream 与 rsa 一起使用

java - Android Studio 上的 LSH

java - Android 中的 SharedPref 在按下按钮时不保存数据

java - "Non-static method cannot be referenced from static context"错误

javascript - 在 Replace() 方法中使用变量 - Javascript