首页 新闻 搜索 专区 学院

泛型类型作为函数参数

0
悬赏园豆:20 [已解决问题] 解决于 2011-03-19 21:39

static void Main(string[] args)        {

List<string> list = new List<string>();

list.Add("abc");

ChangeOrNot(list);

   var query = from p in list  select p;           

 foreach (string l in query)  { Console.WriteLine(l); }

}

 private static void ChangeOrNot(List<string> list)

 {           

 list.Add("def"); 

 }

输出abc def,并没有加ref关键字.

求解原理.

lgz的主页 lgz | 菜鸟二级 | 园豆:265
提问于:2011-03-19 19:55
< >
分享
最佳答案
0

List<T>是引用类型,也就是说你传入的参数实际上是它的内存地址,函数中对参数中作的任何改变实际上都是对原来的List操作

收获园豆:20
七月霄雨 | 小虾三级 |园豆:1282 | 2011-03-19 21:22
其他回答(1)
0

private static void ChangeOrNot(List<string> list)

这一句吗?貌似这是list的定义啊.

就是参数是个string类型的list啊

Rusty's code | 园豆:410 (菜鸟二级) | 2011-03-19 20:06
平常我们datatable这些类型的实例作为参数传递给函数的时候,如果想在函数里面改变实例的数据,需要在参数前面加上ref或者out关键字.
但是这里并没有加,也被函数改变了.
支持(0) 反对(0) lgz | 园豆:265 (菜鸟二级) | 2011-03-19 20:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册