1:out参数 public void myproc(out int aa){}调用:myproc(out var)2:ref参数 public void myproc(ref int aa){}调用: var=new ... myproc(ref var)不同之处在于var为ref类型时调用前需初始化
声明函数的时候用public void proc(out int aa) 实际调用的时候用proc(out x),x是声明为int的变量 好像还有另外一种方法:装箱(boxing)成object,就可以把值形变量转换成引用型,不过没测试过:)
我用private void proc(out int aa) 调用 int aa; aa = 0; proc(out aa);为什么出错, 好像是不认识out关键字
out参数的使用: using System; class Out { static void Main() { string dir,name; SplitPath("C:\\Windows\\System\\Hello.txt",out dir,out name); Console.WriteLine(dir); Console.WriteLine(name); } static void SplitPath(string path,out string dir,out string name) { int i=path.Length; while(i>0) { char ch=path[i-1]; if ((ch=='\\') || (ch=='/') || (ch==':')) break; i--; } dir=path.Substring(0,i); name=path.Substring(i); } }
ref参数的使用: using System; public class Ref { public static void Main() { int i=1,j=2; Swap(ref i,ref j); Console.WriteLine("i={0},j={1}",i,j); } static void Swap(ref int x,ref int y) { int temp=x; x=y; y=temp; } }
public void myproc(out aa){}
(有同事和我讲过这个问题¨©«)
public void myproc(out int aa){}调用:myproc(out var)2:ref参数
public void myproc(ref int aa){}调用:
var=new ...
myproc(ref var)不同之处在于var为ref类型时调用前需初始化
实际调用的时候用proc(out x),x是声明为int的变量
好像还有另外一种方法:装箱(boxing)成object,就可以把值形变量转换成引用型,不过没测试过:)
调用
int aa;
aa = 0;
proc(out aa);为什么出错, 好像是不认识out关键字
using System;
class Out
{
static void Main()
{
string dir,name;
SplitPath("C:\\Windows\\System\\Hello.txt",out dir,out name);
Console.WriteLine(dir);
Console.WriteLine(name);
}
static void SplitPath(string path,out string dir,out string name)
{
int i=path.Length;
while(i>0)
{
char ch=path[i-1];
if ((ch=='\\') || (ch=='/') || (ch==':')) break;
i--;
}
dir=path.Substring(0,i);
name=path.Substring(i);
}
}
using System;
public class Ref
{
public static void Main()
{
int i=1,j=2;
Swap(ref i,ref j);
Console.WriteLine("i={0},j={1}",i,j);
}
static void Swap(ref int x,ref int y)
{
int temp=x;
x=y;
y=temp;
}
}