在同一个类中,List<myclass>泛型集合方法外声明为null,在方法中给没有作为参数传入给他赋新值没有返回值,方法外的集合会改变?
myclass是引用类型,不作为参数传入,直接访问赋值,方法外的集合会改变吗
会不会改变,你看它是不是引用类型的。
不会!
方法的参数分为形参和值参两种,所谓值参就是传递参数的值,而形参就是传递参数的地址(在.NET里没有地址的概念,但作用是一样的)。
形参又分为引用参数和输出参数。
引用参数是原本就可能有内容的参数,也就是说,参数在调用的时候已经初始化了的(.NET中变量未赋值就使用是不允许的,ref引用参数定义就有这个要求)
输出参数是原本就为空的参数(可以为空,也可以不为空),如果原来参数有值也会被覆盖,在方法体内在方法结束前必须对输出参数(out)进行至少一次赋值。输出参数在调用之前定义的变量可以不赋值。
形参传递的必须是变量,而不能是常量、表达式等。
值参又分为值类型参数与引用类型参数(形参其实也是有这个区分)。对于引用类型的值参,方法体内可以对参数对象内容进行改变,如对集合的排序、增加、删除、插入成员,修改对象的属性等。而对于值类型的值参则没办法做任何改变。
理解了,你也就明白了你的问题为什么会这样了,以及该怎么去修正代码了。