gpt4 book ai didi

c# - 有一种方法可以在 C# 中使用可变参数按引用传递吗?

转载 作者:太空狗 更新时间:2023-10-30 00:04:21 26 4
gpt4 key购买 nike

我想要一个函数来修改一些可变参数列表,但它们都是值类型(int、string)。有没有一种方法可以使 params 关键字与 ref 关键字或类似关键字一起使用?

public void funcParams(params object[] list)
{
/* Make something here to change 'a', 'b' and 'c' */
}

public void testParams()
{
int a = 1, b = 2, c = 3;

funcParams(a, b, c);
}

问题是,我试图通过创建一种修改对象字段的方法让我的生活更轻松。我正在使用 Cecil 进行一些动态代码生成,并试图避免编写过多的 IL 生成代码。

为了简化,我想通过引用传递字段列表,我需要更改为更改它们的函数,而不是通过生成相应的 IL 来更改它们。一些参数可以为空,这会使代码生成更加痛苦。在这种情况下,制作一些重载方法而不是参数不会有多大用处。

最佳答案

好吧,你可以声明一些重载,即

public void FuncParams(ref int a) {...}
public void FuncParams(ref int a, ref int b) {...}

等等

否则,您将不得不从数组中读回(因为 params 的真正意思是“隐式数组”):

object[] args = {1,2,3};
funcParams(args);
Console.WriteLine(args[0]); // updated
Console.WriteLine(args[1]); // updated
Console.WriteLine(args[2]); // updated

(当然,如果只接受int,最好全程使用int[])

关于c# - 有一种方法可以在 C# 中使用可变参数按引用传递吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435049/

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