我只是想知道是否有一种方法可以简化这段代码:
var myStr = GetThatValue();
myStr = myStr.Substring(1, myStr.Length - 2); // remove first and last chars
进入这个:
// how to get hold of GetThatValue return value?
var myStr = GetThatValue().Substring(1, hereWhat.Length - 2);
虽然关于 this
关键字,但它在这种情况下不起作用。它将按预期引用类实例。
最佳答案
没有。替代方案是这样的:
var myStr = GetThatValue().Substring(1, GetThatValue().Length - 2);
如您所见,它调用了 GetThatValue()
两次。因此,如果该操作代价高昂或返回不同的值,那么它可能不应该被重新调用。
即使这不是一个昂贵的操作,这也正是变量用于...存储值的教科书案例。
不过,有一种情况是完全可以接受的。考虑 C# 的属性,它们实际上只是经典 getter/setter 方法的语法糖。如果我们从传统 Java 的角度来看这些 getter,我们可能会得到这样的结果:
private thatValue;
public string GetThatValue() { return someString; }
// later...
var myStr = GetThatValue().Substring(1, GetThatValue().Length - 2);
在这种情况下,这不是一项昂贵的操作,也不会返回不同的值。 (尽管有线程。)在这种情况下,使用变量与方法之间没有明显的逻辑差异,因为方法只是类级变量的包装器。
事实上,当 getter 有一些逻辑应该总是包装对该变量的访问时,即使对于私有(private)成员,也经常使用这种方法。
关于c# - 如何在后续方法中引用方法返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35290600/