Is it Out可用于传递引用类型(即对象)

本文关键字:引用类型 对象 it Out 用于 Is | 更新日期: 2023-09-27 18:34:32

考虑以下示例,此处传递int i作为参考。

我的问题是,我可以将引用类型传递给 out 吗? 喜欢对象(即(静态空隙总和(out OutExample oe(

class OutExample
{
   static void Sum(out int i)
   {
      i = 5;
   }
   static void Main(String[] args)
   {
     int val;
     Sum(out val);
     Console.WriteLine(val);
     Console.Read();
   }
}   

现在下面的代码有一些错误,

class OutExample
{
  int a;
   static void Sum(out OutExample oe)
   {
    oe.a = 5;
   }
   static void Main(String[] args)
   {
    int b;
    OutExample oe1=new OutExample();
    Sum(out oe);
    oe.b=null;
    Console.WriteLine(oe.b);
    Console.Read();
   }
   }   

终于得到了答案!

class OutExample
{
int a;
int b;
static void Sum(out OutExample oe)
 {
   oe = new OutExample();
   oe.a = 5;
 }
static void Main(String[] args)
{ 
   OutExample oe = null; 
   Sum(out oe);
   oe.b = 10;
   Console.WriteLine(oe.a);
   Console.WriteLine(oe.b);
   Console.Read();
}
} 

Is it Out可用于传递引用类型(即对象)

必须在 Sum 方法中创建新OutExample

class OutExample
{
   int a;
   int b;
   static void Sum(out OutExample oe)
   {
       oe = new OutExample();
       oe.a = 5;
   }
   static void Main(String[] args)
   { 
       OutExample oe = null; 
       Sum(out oe);
       oe.b = 10;
       Console.WriteLine(oe.a);
       Console.WriteLine(oe.b);
       Console.Read();
   }
} 

是的...

static void Sum(out OutExample oe)
{
    oe = null;
    // or: oe = new OutExample();
}
class OutExample {}

我建议你重新考虑一些事情。引用类型是对存储位置的引用。在传递它out传递对此引用的引用。你为什么不直接经过ref