读书人

out参数的有关问题

发布时间: 2012-09-16 17:33:17 作者: rapoo

out参数的问题,急!在线等

C# code
        static void Main(string[] args)        {            ConsoleTest.goods mode=new ConsoleTest.goods();            testReference<ConsoleTest.goods>(out mode);            Console.WriteLine(mode.Barcode);            Console.ReadKey();        }        private static void testReference<T>(out T model) where T : new()        {            model = new T();            ConsoleTest.goods good = (model as ConsoleTest.goods);            testReference2<ConsoleTest.goods>(out good);                   }        private static void testReference2<T>(out T model) where T : new()        {            model = new T();            ConsoleTest.goods good = model as ConsoleTest.goods;            good.Barcode = "111";        }

按照我想的 应该输出“111”,为什么输出为“”

[解决办法]
testReference2中重新new的model,这个和你testReference1中的ConsoleTest.goods good不是一个
[解决办法]
问题出在这:

private static void testReference<T>(out T model) where T : new()
{
model = new T();
ConsoleTest.goods good = (model as ConsoleTest.goods);
testReference2<ConsoleTest.goods>(out good);

}

你并没有将 model 往下传递。 testReference2 修改了 good 但没有修改最外面传入的 model。
good 在 testReference<T> 中只是临时变量。
C# code
private static void testReference<T>(out T model) where T : new(){    model = new T();    //ConsoleTest.goods good = model as ConsoleTest.goods;    testReference2<T>(out model);} 

读书人网 >C#

热点推荐