错误:无法将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);
}
}
}
问题出在行
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];