今天又遇到这个问题了,问了问同事,他说最近面试的时候,也问道他了,于是给我讲了讲,现在大概是记住了,记录下来,以备自用。
首先是看下面的code例子
string b=
"bb";
Public void A( ref b)
{
// to do
}
string d;
Public void C( out d)
{
d= "jjjjj";
// to do
}
Public void A( ref b)
{
// to do
}
string d;
Public void C( out d)
{
d= "jjjjj";
// to do
}
方法A是引用参数b但是b必须先定义并且在方法之前进行初始化,在引用的时候就像一般方法处理即可;方法B是先定义变量d此时不需要初始化,在引用此变量的方法中需要进行初始化,然后可在方法内做任何操作,个人理解方法C等同于下列代码:
string d;
Public string C( string d)
{
d= " ddd ";
return d;
}
Public string C( string d)
{
d= " ddd ";
return d;
}
所有out是在传进未初始化的参数后在内部做一定的处理,并返回定义的类型。ok game over!
本文转自shenzhoulong 51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/677047,如需转载请自行联系原作者