c# - 如何在后续方法中引用方法返回值?

标签 c# methods return-value

我只是想知道是否有一种方法可以简化这段代码:

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/

相关文章:

c# - 将 Distinct 应用于 OData 查询

c# - 如何确定文件是否与文件掩码匹配?

c# - 将 JSON 反序列化为 C# 类

javascript - 数组 forEach 不返回 bool 值

c - 我们如何分配内存以返回一个 char**

c - c中的库函数返回值到哪里?

c# - 计算旋转时相对于其他点的点位置 - C# XNA

c# - 如何使用反射在静态类中查找私有(private)静态方法?

C++函数从字符串中误读字符

php 使用上一页中的参数选择查询