错误:无法将lambda表达式转换为类型';int';因为它不是委托类型

本文关键字:类型 因为 int 表达式 lambda 转换 错误 | 更新日期: 2023-09-27 18:27:50

我得到以下错误:

无法将lambda表达式转换为类型"int",因为它不是委托类型

运行此代码时:

namespace solutions  
{  
    class Program  
    {  
        static void Main()  
        {  
            int i=3, j=4,k,l;  
            k=AddMult(i,j);  
            l=AddMult(i,j);  
            Console.WriteLine("{0} {1}", k,l);  
        }  
        static int AddMult(int ii, int jj)  
        {
            int kk, m;  
            kk= ii+jj;  
            m=ii*jj;  
            return (kk , m);  
        }  
    }  
}  

错误:无法将lambda表达式转换为类型';int';因为它不是委托类型

问题出在行

return (kk, m);

您可能只想返回m吗?

看起来您想要返回多个值。要做到这一点,有各种选择,但我个人会创建一个类:

public class AddedAndMultiplied
{
    public int Added { get; set; }
    public int Multiplied { get; set; }
}

然后你的功能变成:

static AddedAndMultiplied AddMult(int ii, int jj)  
{
    int kk, m;  
    kk= ii+jj;  
    m=ii*jj;  
    return new AddedAndMultiplied { Added = kk, Multipled = m };  
}  

最后,您的主要功能更改为:

var am = AddMult(i,j);  
Console.WriteLine("{0} {1}", am.Added, am.Multiplied);  

您将AddMult函数的返回类型指定为int,但(kk , m)不是int。

有多种选择可以实现这一点:

返回整数数组:

static int[] AddMult(int ii, int jj)
{
    int kk, m;
    kk= ii+jj;
    m=ii*jj;
    return new[] { kk, m };
} 

定义一个包含两个整数的类并返回这个类:

class Result
{
    public int kk { get; set; }
    public int m { get; set; }
}
static Result AddMult(int ii, int jj)
{
    int kk, m;
    kk= ii+jj;
    m=ii*jj;
    return new Result { kk = kk, m = m };
} 

或者你可以使用通用的Tuple类:

static Tuple<int, int> AddMult(int ii, int jj)
{
    int kk, m;
    kk= ii+jj;
    m=ii*jj;
    return Tuple.Create(kk, m);
} 

编辑:您还需要相应地修改您的主程序。如果使用整数数组:

int[] result = AddMult(i,j); 
k = int[0];
m = int[1];
相关文章: