ref在传递参数的作用是什么 1.ref 关键字使参数按引用传递。2.其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。3.使用ref 参数,方法定义和调用方法都必须显式使用 ref 关键字4.传递到 ref 参数的参数必须最先初始化。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以改变传入变量的值比如test(ref string s)可以改变s的值,而没有ref的话,你即便在函数内部改变了s,出了函数体,s还会恢复传入的值 ref一般是传递值类型的参数吧,意思是将值类型的参数按引用类型参数来传递.引用类型还需要ref吗??! 可以改变传入变量的值 比如test(ref string s) 可以改变s的值,而没有ref的话,你即便在函数内部改变了s,出了函数体,s还会恢复传入的值如:s=10;test(ref string s){s=30;}prentf s;如果不加ref 那么s最后的值是10;如果加ref 那么随后的值是30; 在c/s模式下即使引用类型也是要加ref的,以保证服务器端的修改能传回客户端 ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。例如:复制代码class RefExample{ static void Method(ref int i) { i = 44; } static void Main() { int val = 0; Method(ref val); // val is now 44 }}传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。(请参见 out。)尽管 ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:复制代码class CS0663_Example { // compiler error CS0663: "cannot define overloaded // methods that differ only on ref and out" public void SampleMethod(ref int i) { } public void SampleMethod(out int i) { }}但是,如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:复制代码class RefOutOverloadExample{ public void SampleMethod(int i) { } public void SampleMethod(ref int i) { }} 备注属性不是变量,因此不能作为 ref 参数传递。有关传递数组的信息,请参见使用 ref 和 out 传递数组。 示例按引用传递值类型(如上所示)是有用的,但是 ref 对于传递引用类型也是很有用的。这允许被调用的方法修改该引用所引用的对象,因为引用本身是按引用来传递的。下面的示例显示出当引用类型作为 ref 参数传递时,可以更改对象本身。复制代码class RefRefExample{ static void Method(ref string s) { s = "changed"; } static void Main() { string str = "original"; Method(ref str); // str is now "changed" }} ref 关键字使参数按引用传递。 class X{ void M1(int v){ v=100; } void M2(ref int v){ v=100; }}...static void Main(){ X x=new X(); int v=999; x.M1(v);//这时v还是999,进入时参数值为999一个v的copy x.M2(ref v);//这时v是100,进入时为v的引用,值为999,值和上面一样}本来值传到方法中时是传的copy,但加了ref就是传这个值的地址(引用) datagridview数据绑定问题 一个简单的问题。急求解。。。。。 本地运行Asp.net项目 C# 调用构造函数问题 jsp zhong中如何使用Session变量? 这样让自己的程序感知另外的进程(或程序)结束? 关于水晶报表的交叉表的问题!各位帮帮忙:( Visual Studio 2008 能嵌入汇编?!!! vs制作自定义控件问题 Form问题,在非主窗体关闭整个项目用什么 C# 实现WORD功能区最小化的问题 如何截获trackbar事件的键盘事件
比如test(ref string s)
可以改变s的值,而没有ref的话,你即便在函数内部改变了s,出了函数体,s还会恢复传入的值
引用类型还需要ref吗??!
比如test(ref string s)
可以改变s的值,而没有ref的话,你即便在函数内部改变了s,出了函数体,s还会恢复传入的值如:s=10;
test(ref string s)
{
s=30;
}prentf s;如果不加ref 那么s最后的值是10;
如果加ref 那么随后的值是30;
在c/s模式下即使引用类型也是要加ref的,以保证服务器端的修改能传回客户端
复制代码class RefExample
{
static void Method(ref int i)
{
i = 44;
}
static void Main()
{
int val = 0;
Method(ref val);
// val is now 44
}
}传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。(请参见 out。)尽管 ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:
复制代码class CS0663_Example
{
// compiler error CS0663: "cannot define overloaded
// methods that differ only on ref and out"
public void SampleMethod(ref int i) { }
public void SampleMethod(out int i) { }
}但是,如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:
复制代码class RefOutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(ref int i) { }
} 备注属性不是变量,因此不能作为 ref 参数传递。有关传递数组的信息,请参见使用 ref 和 out 传递数组。
示例按引用传递值类型(如上所示)是有用的,但是 ref 对于传递引用类型也是很有用的。这允许被调用的方法修改该引用所引用的对象,因为引用本身是按引用来传递的。下面的示例显示出当引用类型作为 ref 参数传递时,可以更改对象本身。
复制代码class RefRefExample
{
static void Method(ref string s)
{
s = "changed";
}
static void Main()
{
string str = "original";
Method(ref str);
// str is now "changed"
}
}
void M1(int v){
v=100;
} void M2(ref int v){
v=100;
}
}
...
static void Main(){
X x=new X();
int v=999;
x.M1(v);//这时v还是999,进入时参数值为999一个v的copy
x.M2(ref v);//这时v是100,进入时为v的引用,值为999,值和上面一样
}本来值传到方法中时是传的copy,但加了ref就是传这个值的地址(引用)