【发布时间】:2017-12-01 09:18:31
【问题描述】:
是否有关于何时超越另一个的经验法则?
我很好奇,因为我在这里遇到了一个难题,我有一个非常常用的方法,返回一个相当大的自定义类类型。我想知道在字段中保存这个自定义类的实例是否会更便宜,然后在方法中每次都更改并返回它,而不是像我有一个新类那样创建一个全新的对象每次在方法中创建的实例。
【问题讨论】:
-
是的,有一个规则,而且很简单:当需要局部变量时,使用局部变量;当你需要一个字段时,使用一个字段。
-
两者在功能上会做不同的事情,您需要首先验证行为变化是否正常。
-
当你返回一个类的instance时(你不能返回一个类),你返回它的引用。该对象仍将位于堆上,无论它是局部变量还是字段。而且字段和局部变量之间的选择不是效率问题,而是功能问题。
-
@K_Nielsen... 返回字段(具有类类型)总是比每次调用创建新实例要快。但不要忘记,如果您返回字段,则返回参考。
-
@Vasek 这是一个大胆的声明。您是否有任何指向说明此内容的文档的链接?您的第二条语句“如果返回字段,则返回参考”是什么意思?
标签: c# variables methods scope