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

如何定义支持任意类型输入的类构造函数参数?

解决方案:让Token类支持任意类型的Value参数

方案一:使用object类型(直接支持任意类型)

在C#中,所有类型(包括值类型、引用类型)都直接或间接继承自object,因此将value的类型声明为object,就能在实例化时接收任意类型的参数。

修改后的完整代码:

class Token
{
    public string Name; // 已知类型
    public object Value; // 运行时确定类型
    public Token(string name, object value)
    {
        Name = name;
        Value = value;
    }
}

使用示例

// 可传入字符串、整数、布尔值等任意类型
var stringToken = new Token("StringToken", "Hello World");
var intToken = new Token("IntToken", 123);
var boolToken = new Token("BoolToken", true);

注意事项

从Value取值时需要强制类型转换,若类型不匹配会抛出InvalidCastException,例如:

// 会抛出异常,因为stringToken的Value是字符串类型
var num = (int)stringToken.Value;

方案二:泛型类(类型安全的替代方案)

如果希望在编译阶段就确定Value的类型,避免强制转换风险,可以用泛型定义Token类:

class Token<T>
{
    public string Name;
    public T Value;
    public Token(string name, T value)
    {
        Name = name;
        Value = value;
    }
}

使用示例

// 实例化时指定类型,编译时会自动校验类型合法性
var stringToken = new Token<string>("StringToken", "Hello World");
var intToken = new Token<int>("IntToken", 123);

优点

  • 编译阶段即可发现类型不匹配问题,避免运行时异常
  • 取值无需强制转换,代码更简洁安全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:03:19