Nei*_*ski 28 .net c# arrays immutability
有可能以某种方式将a标记System.Array为不可变.当置于public-get/private-set之后,它们无法添加,因为它需要重新分配和重新分配,但消费者仍然可以设置他们希望的任何下标:
public class Immy
{
public string[] { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
我认为readonly关键字可能会成功,但没有这样的运气.
小智 29
该框架设计指南建议返回数组的副本.这样,消费者就无法从阵列中更改项目.
// bad code
// could still do Path.InvalidPathChars[0] = 'A';
public sealed class Path {
public static readonly char[] InvalidPathChars =
{ '\"', '<', '>', '|' };
}
Run Code Online (Sandbox Code Playgroud)
这些更好:
public static ReadOnlyCollection<char> GetInvalidPathChars(){
return Array.AsReadOnly(InvalidPathChars);
}
public static char[] GetInvalidPathChars(){
return (char[])InvalidPathChars.Clone();
}
Run Code Online (Sandbox Code Playgroud)
这些例子直接来自书中.
小智 27
ReadOnlyCollection<T>可能就是你要找的东西.它没有Add()方法.
| 归档时间: |
|
| 查看次数: |
14997 次 |
| 最近记录: |