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

在C#中如何拼接string与int变量并作为返回值输出?

C# 多类型返回方案及原代码报错原因

原代码运行失败原因

你的示例代码声明了返回值类型为int,但实际返回的是字符串和整数拼接后得到的string类型,C#是强类型语言,编译时会校验返回值和声明类型的匹配度,二者不匹配因此无法运行。

如果你的需求就是返回拼接后的带ID的文字,直接修改返回类型为string即可正常运行,示例代码:

public string Test(int id1) 
{ 
    return "Your ID is " + id1; 
}

多返回类型的实现方案

如果确实需要同一个方法支持返回不同类型的变量,常用方案如下:

  • 返回object类型
    所有C#类型都继承自object,因此可以将返回值声明为object来承接任意类型的返回结果,拿到返回值后需要手动做类型转换。
    示例:
    public object Test(int id1)
    {
        // 可按需返回int、string等任意类型的结果
        if (id1 > 0) return id1;
        return "Invalid ID";
    }
    
    缺点是存在拆箱性能损耗,且没有编译时类型安全校验。
  • 返回元组(C# 7.0及以上版本支持)
    如果你需要同时返回多个不同类型的结果,优先用值元组,调用时可以直接获取对应类型的字段,无需转换。
    示例:
    public (int Id, string Prompt) Test(int id1)
    {
        return (id1, $"Your ID is {id1}");
    }
    // 调用示例
    var result = Test(1001);
    int id = result.Id;
    string prompt = result.Prompt;
    
  • 泛型方法
    如果调用时可以明确需要返回的类型,可以用泛型实现强类型的多返回适配:
    public T Test<T>(int id1)
    {
        if (typeof(T) == typeof(int)) return (T)(object)id1;
        if (typeof(T) == typeof(string)) return (T)(object)$"Your ID is {id1}";
        return default;
    }
    // 调用示例
    int intResult = Test<int>(1001);
    string strResult = Test<string>(1001);
    
  • 返回dynamic类型(不推荐)
    可以声明返回类型为dynamic,编译时会跳过类型检查,类型校验逻辑延迟到运行时执行,容易引发运行时异常,非必要不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:45:04