作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
.NET 中的 inout(C# 中的 ref,vb.net 中的 byref(如 out 参数))参数是否有很好的用途?
我觉得一个参数既作为输入又作为返回值造成的困惑,比增加out参数的参数个数,或者返回一个数组,或者返回一个自定义类更糟糕。
最佳答案
我遇到的最常见的用途(在我看来,这仍然不是很常见)是一种“修改现有对象,或在必要时创建一个对象”。例如:
public void AppendToBuilder(ref StringBuilder builder)
{
if (builder == null)
{
builder = new StringBuilder();
}
builder.Append(/* whatever */);
}
StringBuilder
可能不是一个很好的例子,但这意味着您有时可以在不需要时避免创建对象:
public static string DoSomething(IEnumerable<Foo> foos)
{
// For an empty collection or where there aren't any
// frobulating foos, we don't need to create a builder
StringBuilder builder = null;
foreach (Foo foo in foos)
{
if (foo.Frobulates)
{
foo.AppendToBuilder(ref builder);
}
}
return builder == null ? null : builder.ToString();
}
关于.net - inout参数有什么用处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/596549/
我正在阅读有关 Edit Distance between 2 strings 的问题。 它可以使用编辑距离的公式通过动态规划来解决。我无法理解的是它的用处。首先,这与知道 2 个字符串的最长公共(p
我是一名优秀的程序员,十分优秀!