gpt4 book ai didi

c# - .NET 中是否可以使用不可变数组?

转载 作者:IT王子 更新时间:2023-10-29 04:13:30 31 4
gpt4 key购买 nike

是否有可能以某种方式将 System.Array 标记为不可变。当放在 public-get/private-set 后面时,它们不能被添加到,因为它需要重新分配和重新分配,但消费者仍然可以设置他们想要的任何下标:

public class Immy
{
public string[] { get; private set; }
}

我认为 readonly 关键字可以解决问题,但运气不佳。

最佳答案

Framework Design Guidelines建议返回数组的副本。这样,消费者就无法更改数组中的项目。

// 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();
}

例子直接来自书本。

关于c# - .NET 中是否可以使用不可变数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/210428/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com