在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这是个老话题了,不过还是有一些初学者不是太明白,这个也是在面试时容易问的问题。
试验1:Ref对于改变引用对象的属性时的影响
using System; namespace SOVT { class Program { static void Main() { MyClass myClass=new MyClass(); Console.WriteLine(myClass.Field); ChangeMyClass(myClass); Console.WriteLine(myClass.Field); ChangeMyClass(ref myClass); Console.WriteLine(myClass.Field); Console.ReadKey(); } public class MyClass { public int Field; } public static void ChangeMyClass(MyClass myClass) { myClass.Field = 1; } public static void ChangeMyClass(ref MyClass myClass) { myClass.Field = 2; } } } 其运行结果为:
结论:对于引用对象,无论是否有Ref关键字修饰,都能改变其调用方法外部的引用的对象的字段值,用不用Ref无影响。
试验2:Ref对于在方法内部改变其指向对象时影响
using System; namespace SOVT { class Program { static void Main() { MyClass myClass=new MyClass(); Console.WriteLine(myClass.Field); ChangeMyClass(myClass); Console.WriteLine(myClass.Field); ChangeMyClass(ref myClass); Console.WriteLine(myClass.Field); Console.ReadKey(); } public class MyClass { public int Field; } public static void ChangeMyClass(MyClass myClass) { myClass = new MyClass {Field = 1}; } public static void ChangeMyClass(ref MyClass myClass) { myClass = new MyClass { Field = 2 }; } } }
运行结果:
结论:对于再分配引用对象的引用的操作,没有Ref修饰时是不能在外部生效的,只有有Ref修饰的引用参数才能使再分配操作应用于外部。
小结:
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论