gpt4 book ai didi

c# - CA1819 : Properties should not return arrays. 此规则是否也适用于其他对象?

转载 作者:行者123 更新时间:2023-11-30 12:10:19 25 4
gpt4 key购买 nike

关于CA1819 msdn性能警告规则:

Arrays returned by properties are not write-protected, even if the property is read-only. To keep the array tamper-proof, the property must return a copy of the array. Typically, users will not understand the adverse performance implications of calling such a property. Specifically, they might use the property as an indexed property.

我想知道当属性返回时其他对象是否可变,或者这是否只发生在数组中?如果它只对数组有效,为什么?

最佳答案

假设你有:

int[] ints = new int[] { 1, 2, 3, 4 }

public int[] Ints { get { return ints; } }

你的类的消费者可以做:

instance.Ints[0] = 10;

因此您允许修改类的数据。

要防止这种情况,您可以这样做:

public IEnumerable<int> Ints { get { return ints; } }

所以你的类的消费者只能读取值而不能修改。

现在,为什么?

好吧,如果你想让 let 修改数组的数据,这取决于你的类的设计,警告警告你可能你期望数组的值不能被操作,因为你没有 在属性中设置

PS: 有很多方法,比如只读集合等......,可以防止改变你的集合

看看this

关于c# - CA1819 : Properties should not return arrays. 此规则是否也适用于其他对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699478/

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