<分区>
我注意到 FCL 中有许多静态方法只影响单个对象,例如 Array.Resize
。将它们设为静态有什么意义?
<分区>
我注意到 FCL 中有许多静态方法只影响单个对象,例如 Array.Resize
。将它们设为静态有什么意义?
最佳答案
实例方法只能修改对象的成员属性。在您的 Array.Resize
示例中,该方法修改了数组引用本身,这就是为什么它是静态的并通过引用获取参数的原因。
当你这样做时:
int[] arr = ...;
Array.Resize(ref arr, 10);
arr
引用本身被修改,这不可能通过调用 arr
上的方法实现。
或者,在不支持按引用传递的语言(例如 Java)中,它会被声明为返回新数组。
关于c# - Microsoft 如何决定在 C# 中将方法设为静态/成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9356447/