是否可以接受可能返回数组的泛型属性

本文关键字:数组 属性 返回 泛型 是否 | 更新日期: 2023-09-27 18:24:02

根据http://msdn.microsoft.com/en-US/library/0fss9skc(v=vs.120).aspx,属性不应返回数组。这是如何与泛型交互的?如果数组是泛型允许的类型,那么我应该生成像T GetValue()SetValue(T value)这样的函数而不是T Value { get; set; }吗?

是否可以接受可能返回数组的泛型属性

这个规则不是绝对的。了解它的来源:返回数组的属性实际上需要制作它的副本,以便调用方可以更改其副本,而不会进入对象内部状态。

如果您正在处理泛型代码,那么泛型代码对具体的T一无所知。它不取决于它的内部结构。因此,遵守这一规则并没有帮助。将数组传入和传出泛型代码是完全可以接受的。

实例:一个List<int[]>

除此之外,Servy正确地指出,创建获取/设置值的方法并不能真正减轻规则推理中描述的影响。