能否重构C#方法接口以移除`new string[] {}`提升可读性?
优化调用可读性的方案
当然可以!你现在遇到的问题是每次调用AddDataElement都要手动写new string[] {},确实显得冗余且影响代码可读性。咱们可以用C#的params关键字来彻底解决这个问题,同时还能保持代码的兼容性。
方案1:使用params参数修改方法定义
直接把方法的参数改成params string[],这样你既可以传单个字符串,也可以传多个字符串参数,编译器会自动帮你把它们打包成数组,不用再手动创建数组实例。
修改后的方法定义:
public virtual Segment AddDataElement(params string[] dataElement) { dataElementList.Add(dataElement); return this; }
优化后的调用示例
现在调用的时候就可以去掉烦人的new string[] {},代码瞬间清爽很多:
message.AddSegment("NAD") .AddDataElement(partyFunctionCodeQualifier) .AddDataElement(partyIdentifier, "", "92");
额外优势:兼容原有调用方式
这个修改完全向后兼容——如果你之前已经写了new string[] {}的调用代码,它们依然可以正常运行,不需要做任何修改。比如下面的写法还是有效的:
// 旧写法依然可用 var existingArray = new string[] { "foo", "bar" }; message.AddSegment("NAD").AddDataElement(existingArray);
可选补充:重载单个参数的版本(非必需)
如果你想进一步优化单个字符串参数的场景,也可以额外重载一个只接受单个字符串的方法,但其实params已经覆盖了这种情况,所以这个是可选的:
public virtual Segment AddDataElement(string singleElement) { return AddDataElement(new[] { singleElement }); }
不过个人更推荐只用params版本,因为它更灵活,能覆盖所有场景,不需要维护多个重载。
内容的提问来源于stack exchange,提问作者pepr
相关产品推荐
相关产品推荐

