如何用单一方法替代接收List<string>与string[]的两个重载方法?
可以合并成单一方法,用
IList<string>作为参数类型 当然能把这两个方法合并成一个,IList<string> 是最适配的参数类型——因为List<string>和string[]都实现了IList<string>接口,而且这个接口刚好提供了你需要的所有操作:
- 通过索引读写元素(
collection[i]) - 获取元素总数(
collection.Count,数组的Length会被自动映射为Count属性)
重写后的单一方法代码
public static void NumberLinesInCollection(IList<string> collection, int startNumberingFromRowNumber = 0) { int numberOfLines = collection.Count; for (int i = startNumberingFromRowNumber; i < numberOfLines; i++) { string resultingString = StringOperations.PadWithBlanks( originalString: (i + 1).ToString(), fieldLength: numberOfLines.ToString().Length, position: PaddingDirection.left); collection[i] = resultingString + ". " + collection[i]; } }
补充说明
- 原
List<string>版本里的sourceString变量未被使用,已经在重写代码中移除。 - 调用新方法时,传入
List<string>实例或string[]数组都无需额外转换,直接使用即可:// 传入数组 string[] arr = {"a", "b", "c"}; NumberLinesInCollection(arr); // 传入List List<string> list = new List<string> {"x", "y", "z"}; NumberLinesInCollection(list);
内容的提问来源于stack exchange,提问作者user2102327
相关产品推荐
相关产品推荐

