【发布时间】:2011-03-19 06:20:14
【问题描述】:
我想做的是能够将任意数量的变量传递给函数,在函数内部操作这些变量,并在函数范围之外访问这些操作。
例子
void FunctionA()
{
int x = 1;
string s = "blah";
int y = 4;
FunctionB(out x, out s, out y);
Console.WriteLine("{0}, {1}, {2}", x, s, y);
}
void FunctionB(out params object[] parameters)
{
for(int ii = 0; ii < parameters.Length; ii++)
{
if(parameters[ii] is int) parameters[ii] = (int)parameters[ii] + 1;
}
}
调用 FunctionA() 后,控制台上应该有“2, blah, 5”。有没有办法做到这一点,而不是返回一个 object[] 并解析出我想要的变量?
为了澄清,这就是我想要做的。将一个 byte[] 与一系列变量一起传递给一个函数。尝试从 byte[] 中读取信息并将其分配给传入的变量。因此,如果我将一个 int、一个字符串和另一个 int 写入 byte[] 并传入如下内容:
int x, y;
string s;
byte[] info = ...;
FunctionB(info, x, s, y);
Console.WriteLine("{0}, {1}, {2}", x, s, y);
它会从 byte[] 输出信息。
【问题讨论】:
-
不编译。 “参数不能具有所有指定的修饰符;参数上的修饰符太多”“参数”错误