Is it Out can be used for passing a reference type (i.e) Objects?
本问题已经有最佳答案,请猛点这里访问。
考虑下面的示例,这里传递int i作为引用。
我的问题是,是否可以将引用类型传递给out?like对象(即)静态void sum(out outexample oe)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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(); } } |
下面的代码有一些错误,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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(); } } |
终于得到答案了!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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(); } } |
我建议你重新考虑一下。引用类型是对存储位置的引用。在
您必须在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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(); } } |
对。。。
1 2 3 4 5 6 | static void Sum(out OutExample oe) { oe = null; // or: oe = new OutExample(); } class OutExample {} |