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

如何让Action委托适配返回byte类型的C#方法?

问题原因与解决方案

为什么绑定失败?

Action 委托的定义是无参数、无返回值的委托类型,而修改后的 test2 方法返回 byte 类型,方法签名和 Action 不匹配,所以直接绑定会报错。

可行解决方案

方案1:用Lambda表达式包裹,忽略返回值

这是最直接的解决方式,用Lambda把有返回值的方法包装成无返回值的逻辑,适配Action的要求:

public class B
{
    public void test()
    {
        // 简洁写法
        Action asd = () => test2();
        // 或者带花括号的写法(如果需要加额外逻辑)
        // Action asd = () => { test2(); };
    }
    private byte test2()
    {
        Console.WriteLine("LOL");
        return 0;
    }
}

方案2:如果需要处理返回值,在Lambda中添加逻辑

要是你需要用到test2的返回值,可以在Lambda里先调用方法并接收结果,再做后续处理:

public class B
{
    public void test()
    {
        Action asd = () => 
        {
            byte result = test2();
            // 这里可以添加对result的处理代码,比如打印或者存储
            Console.WriteLine($"返回值:{result}");
        };
    }
    private byte test2()
    {
        Console.WriteLine("LOL");
        return 0;
    }
}

方案3:换用匹配的委托类型(如果需要返回值)

如果你的场景本来就需要获取test2的返回值,那没必要硬用Action,直接用Func<byte>委托(无参数、返回byte的委托):

public class B
{
    public void test()
    {
        Func<byte> asd = test2;
        // 调用时可以获取返回值
        byte result = asd();
    }
    private byte test2()
    {
        Console.WriteLine("LOL");
        return 0;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:10:50