params,out和ref的关键字区别
2011-03-10 21:49
295 查看
(一)params---------可以让参数随意变化的关键字
staticvoid Main(string[] args)
{
TestParams(1, 2, 3);
TestParams(1, 2, 3, 4, 5, 6);//注意参数随意变换
TestParams2(1, "a", "b", 12, 52, 16);
Console.ReadLine();
}
staticvoid TestParams(paramsint[] list)
{
string str =string.Empty;
for (int i =0; i < list.Length; i++)
{
str = str + list[i] +";";
}
Console.WriteLine(str);
}
staticvoid TestParams2(paramsobject[] list)
{
string str =string.Empty;
for (int i =0; i < list.Length; i++)
{
str = str + list[i] +";";
}
Console.WriteLine(str);
}
(二)out------一个引用传递
因为传递的不是值,而是引用,所以对out参数做的任何修改都会反映在该变量当中
结果显示:"hello!"
如果在TestOutPar方法里注释掉 //str = "hello!";那么程序会报错
用途:
当希望一个方法能够返回多个值时,这个out就变得非常有用。比如在分页方法中,我们需要返回当前页,页数等等数据。
staticvoid Main(string[] args)
{
int pageCount;
int pageSize;
string result=TestOutPar(out pageCount, out pageSize);
Console.WriteLine(pageCount);
Console.WriteLine(pageSize);
Console.WriteLine(result);
Console.ReadLine();
}
staticstring TestOutPar(outint pageCount, outint pageSize)
{
pageCount =100;
pageSize =12;
return"hello!";
}
结果显示:100,12,hello!
(三)ref-----------仅仅是一个地址
staticvoid Main(string[] args)
{
int value =10;//必须初始化,因为value进入方法后还是他自己,也因为这个原因,value可以在方法内不操作
TestRefPar(ref value);
Console.WriteLine(value);
Console.ReadLine();
}
staticstring TestRefPar(refint value)
{
//value = 100; //value在方法内不操作
return"hello!";
}
staticvoid Main(string[] args)
{
TestParams(1, 2, 3);
TestParams(1, 2, 3, 4, 5, 6);//注意参数随意变换
TestParams2(1, "a", "b", 12, 52, 16);
Console.ReadLine();
}
staticvoid TestParams(paramsint[] list)
{
string str =string.Empty;
for (int i =0; i < list.Length; i++)
{
str = str + list[i] +";";
}
Console.WriteLine(str);
}
staticvoid TestParams2(paramsobject[] list)
{
string str =string.Empty;
for (int i =0; i < list.Length; i++)
{
str = str + list[i] +";";
}
Console.WriteLine(str);
}
(二)out------一个引用传递
因为传递的不是值,而是引用,所以对out参数做的任何修改都会反映在该变量当中
static void Main(string[] args) { string str; //str不必初始化,因为str进入方法后,会清掉自己,使自己变成一个干净的参数, //也因为这个原因,在从方法返回前,必须给str赋值,否则会报错。 TestOutPar(out str); Console.WriteLine(str); Console.ReadLine(); } static void TestOutPar(out string str) { str = "hello!"; }
结果显示:"hello!"
如果在TestOutPar方法里注释掉 //str = "hello!";那么程序会报错
用途:
当希望一个方法能够返回多个值时,这个out就变得非常有用。比如在分页方法中,我们需要返回当前页,页数等等数据。
staticvoid Main(string[] args)
{
int pageCount;
int pageSize;
string result=TestOutPar(out pageCount, out pageSize);
Console.WriteLine(pageCount);
Console.WriteLine(pageSize);
Console.WriteLine(result);
Console.ReadLine();
}
staticstring TestOutPar(outint pageCount, outint pageSize)
{
pageCount =100;
pageSize =12;
return"hello!";
}
结果显示:100,12,hello!
(三)ref-----------仅仅是一个地址
staticvoid Main(string[] args)
{
int value =10;//必须初始化,因为value进入方法后还是他自己,也因为这个原因,value可以在方法内不操作
TestRefPar(ref value);
Console.WriteLine(value);
Console.ReadLine();
}
staticstring TestRefPar(refint value)
{
//value = 100; //value在方法内不操作
return"hello!";
}
相关文章推荐
- params,out和ref的关键字区别
- ref,out,params关键字的区别
- 方法参数关键字:params、ref及out
- ASP.NET Ref和Out关键字区别分析
- ref和out的区别,以及params的作用
- C# 参考之方法参数关键字:params、ref及out
- 黑马程序员--关键字ref、out、与params
- C# 参考之方法参数关键字:params、ref及out
- Out 与 Ref 关键字的区别
- C#关键字ref和out的区别
- net程序员的盲点(一):ref,out ,params的区别
- C# 参考之方法参数关键字:params、ref及out
- Remoting和WebService/Ref, Out, Params的区别/
- ASP.NET Ref和Out关键字区别分析
- .net程序员的盲点(一):参数修饰符ref,out ,params的区别
- 关键字 ref 和 out 的区别
- C#参数修饰符(关键字out,ref,params),可选参数
- 方法 params、ref和out关键字使用
- C# 参考之方法参数关键字:params、ref及out 引用
- 关键字Ref和Out本质区别实例分析