gpt4 book ai didi

C# 可变长度 args,哪个更好,为什么是 : __arglist, params 数组或 Dictionary

转载 作者:太空狗 更新时间:2023-10-29 18:11:34 26 4
gpt4 key购买 nike

我最近阅读了以下溢出帖子: Hidden Features of C#

指出的功能之一是 arglist。为什么人们会选择这个或替代方案作为对方法使用可变长度参数列表的一种方式?另外请注意,我可能不会在我的代码中使用这种结构,除非有特殊情况需要这样做。这更像是一个语义问题,而不是使用可变长度参数是否实际或谨慎。那么有人知道哪个更好吗?为什么?

 [Test]
public void CanHandleVariableLengthArgs()
{
TakeVariableLengthArgs(__arglist(new StringBuilder(), 12));

object[] arr = { new StringBuilder() };
TakeVariableLengthArgs2(arr);

TakeVariableLengthArgs3(
new Dictionary<string, object>
{ { "key", new StringBuilder() } });
}

public void TakeVariableLengthArgs(__arglist)
{
var args = new ArgIterator(__arglist);

var a = (StringBuilder)TypedReference.ToObject(args.GetNextArg());
a.Append(1);
}

public void TakeVariableLengthArgs2(params object[] args)
{
var a = (StringBuilder)args[0];
a.Append(1);
}

public void TakeVariableLengthArgs3(Dictionary<string, object> args)
{
var a = (StringBuilder)args["StringBuilder"];
a.Append(1);
}

最佳答案

我绝对不会使用 __arglist,因为它没有文档,而且在任何情况下都没有人知道它的含义。

我也会尽可能长时间地避免可变长度参数列表,而是重新设计我的设计以了解什么是真正可变的,并以不太依赖于平台的方式对该可变性进行建模。

关于C# 可变长度 args,哪个更好,为什么是 : __arglist, params 数组或 Dictionary<T,K>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/910585/

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