You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否重构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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:26:06