gpt4 book ai didi

.net - inout参数有什么用处吗?

转载 作者:行者123 更新时间:2023-12-02 06:12:34 24 4
gpt4 key购买 nike

.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com