我有一个简单的方法,如下所示,
private int Increment(out n) {
int n = 46;
return n++;
}
据我了解,使用out必须先初始化变量,但仍然出现
错误return n++
必须在控制离开当前方法之前将out参数'n'分配给
我的变量也出错
int n = 46;
不能在此范围内声明名为“ n”的本地或参数,因为该名称在封闭的本地范围内用于定义本地或参数
我的问题是,为什么我不能在方法内部声明新变量,看来我必须在方法外部声明变量,然后在方法内部分配值。
如果我刚出去,那意味着我必须将int变量传递给我的方法,我不能在方法内部创建吗?并在我的方法中声明的参数指针之外?
答案 0 :(得分:4)
out
声明“声明”了变量,您只需在方法中设置即可>
private int Increment(out int n)
{
n = 46;
return n++;
}
请注意,此方法返回46,但是n
是47。
答案 1 :(得分:1)
您可以这样编写方法。它将返回完美的输出。
private int Increment(out int n)
{
n = 46;
n++;
return n;
}
这将返回47作为输出。
答案 2 :(得分:0)
不确定您要做什么,但这不是它的工作方式。
看一下示例(它不是递增数字的最简单方法,它只是ref
和out
参数的工作原理的一个POC。)
static void Main(string[] args)
{
int incrementingNumber = 0;
while(true)
{
Increment(ref incrementingNumber, out incrementingNumber);
Console.WriteLine(incrementingNumber);
Thread.Sleep(1000);
}
}
private static void Increment(ref int inNumber ,out int outNumber)
{
outNumber = inNumber + 46;
}
输出为: 46 92 138 184 230 276 322 368 414 460 506 552
答案 3 :(得分:0)
n
,因此无法再次将其声明为int。如果只想增加1,则可以在任何地方运行此代码:
n++; // increment n by 1
n += 46; // increment n by 46
如果您真的想要一个函数,我怀疑您同时需要out int n
和return n
此代码将使变量n增加:
private static void Main()
{
int n = 46;
// some code here
IncrementByOne(ref n);
Console.WriteLine("N = " + n);
}
/// this function will increment n by 1
private static void IncrementByOne(ref int n) { n++; }
此代码将返回一个递增的整数
private static void Main ()
{
int n = 46;
// some code here
n = IncrementByOne(n);
Console.WriteLine("N = " + n);
}
/// this function will return an integer that is incremented by 1
private static int IncrementByOne(int n)
{
n++; //increment n by one
return n;
}
如果要在函数中声明n,则必须更早声明
static void Main(string[] args)
{
int n = 46; // you have to set n before incrementing
// some code here
IncrementByOne(out n);
Console.WriteLine("N = " + n);
}
/// this function will always set variable n to 47
private static void IncrementBy47(out int n)
{
n = 46; // assign n to 46
n++; // increase n by one
}
这也可以缩短:
/// This function will always set variable n to 47
private static void SetVarTo47(out int n) { n = 47; }
希望能帮助他们了解自己的工作。