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

如何在C#中将params参数展开传递给另一个方法的params参数

解决方案

直接传递args数组会被C#当作单个参数处理,导致日志占位符匹配错误。正确的做法是将_businessUnit与args的所有元素合并为一个新数组,再传递给LogInformation:

方法1:数组复制拼接

private void LogTheThing(string message, params object?[] args) {
    // 创建容纳业务单元和所有传入参数的新数组
    var combinedArgs = new object?[args.Length + 1];
    combinedArgs[0] = _businessUnit;
    Array.Copy(args, 0, combinedArgs, 1, args.Length);
    
    _logger.LogInformation($"{{BusinessUnit}} - {message}", combinedArgs);
}

方法2:LINQ拼接(需引用System.Linq)

using System.Linq;

// ...

private void LogTheThing(string message, params object?[] args) {
    var combinedArgs = new[] { _businessUnit }.Concat(args).ToArray();
    _logger.LogInformation($"{{BusinessUnit}} - {message}", combinedArgs);
}

两种方式都能让LogInformation接收到展开后的参数数组,实现和手动逐个传递参数一致的效果,确保日志中的所有占位符都能被正确替换。


内容的提问来源于stack exchange,提问作者TugboatCaptain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:47:37