我现在正在设计一个SNMP库。这个问题是由像这样的特殊功能引起的,

*** GetTable(string id)

此函数有时可以返回变量[,],这是一个二维数组,但也可以返回变量[,,]和具有更多维度的数组。所以我认为返回固定数组是不合理的,例如Variable [,],Variable [,,]等。

但是这个方法应该返回什么呢?怎么设计呢?自定义VariableCollection怎么样?

欢迎提出任何建议。

有帮助吗?

解决方案

作为一般规则,返回自定义类型可以更灵活地表示数据。我也赞成提供自己的方法来访问这个集合中的数据,而不是暴露多维数组。

我一般都避免使用多维矩形数组。在许多情况下,多维锯齿状阵列更方便,因为您可以单独提取切片。

其他提示

好吧,你可以返回Array并让调用者检查.Rank

当然,返回一个数组可能不是最好的选择(取决于场景):数组被认为有些危害

返回多维数组是一个冒险的选择。我建议实现一个自定义集合以及方法来获取有关它的内部状态的信息以及从中获取数据的方法。当客户端调用您的方法时,它更灵活,更不容易出错。

如果创建公共Api,建议返回强类型集合<!> lt; T <!> gt;。所以我创建了一个自定义对象,它可以获取您想要返回的所需数据,然后使用.net集合<!> lt; T <!> gt;归还它。

希望这有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top