是否有可能以某种方式标记System.Array
作为不可变的。当放在 public-get/private-set 后面时,它们无法添加到其中,因为它需要重新分配和重新分配,但消费者仍然可以设置他们希望的任何下标:
public class Immy
{
public string[] { get; private set; }
}
我以为readonly
关键字可能会起作用,但没有这样的运气。
The 框架设计指南 https://rads.stackoverflow.com/amzn/click/com/0321246756建议返回数组的副本。这样,消费者就无法更改数组中的项目。
// bad code
// could still do Path.InvalidPathChars[0] = 'A';
public sealed class Path {
public static readonly char[] InvalidPathChars =
{ '\"', '<', '>', '|' };
}
这些更好:
public static ReadOnlyCollection<char> GetInvalidPathChars(){
return Array.AsReadOnly(InvalidPathChars);
}
public static char[] GetInvalidPathChars(){
return (char[])InvalidPathChars.Clone();
}
这些例子直接来自书中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)