[英]What exactly is parameter containing with ref modifier?
我想问一些关于ref修饰符的问题。
我所知道和了解的:使用使用ref修饰符的方法,将不会像按值传递那样复制数据,但是参数可以直接访问参数值。 基本上说,您在方法范围内所做的所有操作都将与在调用方范围内使用参数(传递的变量)进行操作时的行为相同。
我想问一下使用ref修饰符存储在参数中到底是什么:当我将参数传递给使用ref修饰符的方法时,参数将包含对参数值的引用吗? 或者是别的什么?
谢谢您的回答
当您具有带有ref
属性的参数时,它将按引用而不是值传递参数。 这意味着不会创建变量的新副本,而是在函数中使用指向原始变量的指针。
public void Foo()
{
var x = 0;
Bar(x); // x still equals 0
Bar(ref x); // x now equals 1
}
public void Bar(ref int x)
{
x = 1;
}
public void Bar(int x)
{
x = 1;
}
假设我们有这种方法:
public void DoSomething(int number)
{
number = 20;
}
我们使用它:
var number = 10;
DoSomething(number);
Console.WriteLine("Our number is: {0}", number);
输出将是Our number is: 10
。 我们的人数没有变成20。
那是因为我们按值传递 ,所以在更改number
之前,我们基本上是在复制number
。
但是,如果我们改为通过引用传递 :
public void DoSomething(ref int number)
{
number = 20;
}
然后使用我们的方法:
var number = 10;
DoSomething(ref number);
Console.WriteLine("Our number is: {0}", number);
输出将变为Our number is: 20
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.