ref与out的区别与应用

如下Demo:

 b)
        {
            a = 1;
            b 
= 2;
        }
        
static void TestRef(ref int a,ref int b)
        {
            a 
= 33;
            b 
= 44;
        }
        
static void TestNormal(int a,int b)
        {
            a 
= 00;
            b 
= 99;
        }
        
//不用第三个参数 交换2个数的值
        static void TestChange(ref int a,ref int b)
        {
            a 
= a - b;
            b 
= b + a;
            a 
= b - a;
        }
        
static void Main(string[] args)
        {
            
int a=4, b=6;
            
//TestOut(out a, out b);
            
//Console.WriteLine("a={0};b={1}", a, b);

            
//TestRef(ref  a,ref  b);
            
//Console.WriteLine("ref a={0};ref b={1}", a, b);
           
            
//TestNormal(a,b);
            
//Console.WriteLine("normal a={0},b={1}", a, b);

            TestChange(
ref a,ref b);
            Console.WriteLine(
"change a={0},b={1}", a, b);

            
string m = Console.ReadLine();
            
while (m != "0")
            {
                m 
= Console.ReadLine();
            }             

        }

ref和out实现的效果是相同的,都是将值类型的值改变后可以返回出来。现在也了解了在什么情况下使用ref,什么情况下使用out。那为什么需要有这样的返回存在呢?out和ref用在什么情况下呢?他们为什么会出现呢?

由于一个方法只能返回一个值,不能返回多个,这时候用out ref就可以返回多个。

返回多个值,我们可以用数组(但数组必须是同一类型的值),可以用实体(但有时候不是一个实体),这时我们就用到out和ref了。

例如:调用手机号码归属地webservice时,传入一个phoneNum返回多个数据,本地是没有一个实体类来接受多个数据的,也没有在开始对这些返回值赋值,这是传出的值类型前加out!

相关文章:

  • 2022-12-23
  • 2022-01-23
  • 2021-05-23
  • 2022-12-23
  • 2021-09-29
  • 2022-12-23
猜你喜欢
  • 2021-06-08
  • 2022-12-23
  • 2022-12-23
  • 2021-05-31
  • 2022-12-23
相关资源
相似解决方案