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

如何让C#自定义结构体AddTwo支持直接整数赋值?

让自定义C#结构体支持直接整数赋值的方法

要实现像int这类内置值类型那样直接用x = 10;的方式给AddTwo结构体赋值,核心是为结构体定义隐式转换操作符,让编译器可以自动将int类型转换为AddTwo类型。

修改后的完整结构体代码

namespace Struct
{
    struct AddTwo
    {
        public int Valor;

        // 定义从int到AddTwo的隐式转换操作符
        public static implicit operator AddTwo(int value)
        {
            return new AddTwo { Valor = value };
        }

        // 可选:定义从AddTwo到int的隐式转换,方便反向转换
        public static implicit operator int(AddTwo addTwo)
        {
            return addTwo.Valor;
        }

        public override string ToString()
        {
            return (Valor + 2).ToString();
        }
    }
}

调用示例

// 直接用整数赋值,和int的赋值方式一致
AddTwo x = 10;
Console.WriteLine(x); // 输出:12

// 可选:反向转换为int
int y = x;
Console.WriteLine(y); // 输出:10

原理说明

隐式转换操作符public static implicit operator AddTwo(int value)告诉编译器:当遇到把int值赋值给AddTwo变量的场景时,可以自动执行这个转换逻辑,创建一个AddTwo实例并给Valor属性赋值。这和内置值类型之间的隐式转换逻辑完全一致,实现了和int相同的赋值体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:45:01