C#构造函数,对象参数通过引用或值传递
如果你有类和一个构造函数,它接受一个对象作为输入参数 – 该对象是通过引用传递的还是通过值传递的?
并且假设对于类方法,默认情况下,通过值传递对象输入参数,除非使用ref关键字? out关键字怎么样?这是否仍然意味着通过引用传递? 解决方法
所有参数都通过C#中的值传递,除非参数被标记为out或ref. 这是一个巨大的混乱来源.我会更明确地说明事情. 除非参数标有out或ref,否则所有参数都将复制其值.对于值类型,这意味着要传递的值的副本.对于参考类型,这意味着引用的副本.对于最后一点,引用类型的值是引用.
同样,所有参数都通过C#中的值传递,除非参数被标记为out或ref.对于标有ref的参数,对参数的引用传递给该方法,现在您可以将该参数视为别名.因此,当你说 void M(ref int m) { m = 10; } int n = 123; M(ref n); 你可以认为M中的m是n的别名.那是m和n只是同一个存储位置的两个不同的名字. 这是非常不同的 string s = "Hello,world!"; string t = s; 在这种情况下,对于相同的存储位置,s和t不是通道.这些是两个不同的变量,即引用同一个对象.
ref和out之间的唯一区别是ref需要在传递之前初始化变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |