我收到以下错误:
无法将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);
}
}
}
答案 0 :(得分:2)
问题在于
行return (kk, m);
您是否想要仅返回m
?
答案 1 :(得分:1)
看起来您想要返回多个值。要做到这一点,有各种选择,但我个人会创建一个类:
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);
答案 2 :(得分:1)
您将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];