我现在正在设计一个 SNMP 库。问题是由这样的特殊功能引起的,
*** GetTable(字符串 id)
这个函数有时可能返回一个二维数组Variable[,],但也可能返回Variable[,,] 和具有更多维度的数组。所以我认为返回Variable[,]、Variable[,,]等固定数组是不合理的。
但是这个方法应该返回什么呢?如何设计它?自定义 VariableCollection 怎么样?
欢迎任何建议。
我现在正在设计一个 SNMP 库。问题是由这样的特殊功能引起的,
*** GetTable(字符串 id)
这个函数有时可能返回一个二维数组Variable[,],但也可能返回Variable[,,] 和具有更多维度的数组。所以我认为返回Variable[,]、Variable[,,]等固定数组是不合理的。
但是这个方法应该返回什么呢?如何设计它?自定义 VariableCollection 怎么样?
欢迎任何建议。
作为一般规则,返回自定义类型可以在数据表示方面提供更大的灵活性。我还倾向于提供您自己的方法来访问此集合中的数据,而不是公开多维数组。
我自己通常避免使用多维矩形数组。在许多情况下,多维锯齿状数组更方便,因为您可以单独取出切片。
好吧,您可以返回Array
并让调用者检查.Rank
?
当然,首先返回一个数组可能不是最好的选择(取决于场景):数组被认为有些有害
返回一个多维数组是一个冒险的选择。我建议实现一个自定义集合以及获取有关其内部状态的信息的方法以及从中获取数据的方法。当客户端调用您的方法时,它更灵活且不易出错。
如果创建公共 Api,建议返回强类型集合 <T>。所以我会创建一个自定义对象,它可以获取您想要返回的所需数据,然后使用 .net 集合 < T > 来返回它。
希望这可以帮助。