C# C方法溢出
我定义的MilesCal类C# C方法溢出,c#,.net,class,overloading,C#,.net,Class,Overloading,我定义的MilesCal类 private void btnMiles_Click(object sender, EventArgs e) { try { int milesless200 = int.Parse(txtMiles.Text); int milesmore200 = int.Parse(txtMiles200.Text); MilesCal workingoutmilescost = new MilesCal();
private void btnMiles_Click(object sender, EventArgs e)
{
try
{
int milesless200 = int.Parse(txtMiles.Text);
int milesmore200 = int.Parse(txtMiles200.Text);
MilesCal workingoutmilescost = new MilesCal();
if (milesless200 > 200)
{
lblMilesMorethan200.Text = "You can't enter more then 200 in the first box";
}
else
{
if (milesmore200 == 0)
{
int carry = workingoutmilescost.MilesRepay(milesless200);
lblMilesShow.Text = carry.ToString();
}
else
{
int carry = workingoutmilescost.MilesRepay(milesless200, milesmore200);
lblMilesShow.Text = carry.ToString();
}
}
lblMilesError.Text = "No Error";
}
catch (FormatException fEx)
{
lblMilesError.Text = fEx.Message;
}
}
假设该代码在标签中显示驾驶员在前200英里内以5便士的价格驾驶,然后再以2便士的价格驾驶。我已经让代码工作了,但后来发现它必须使用方法溢出来完成。此时,我收到一个错误,错误1无法将方法组“ToString”转换为非委托类型“string”。您是否打算调用该方法?在
class MilesCal
{
public int MilesRepay(int a)
{
int x;
return x = (a*5)/100;
}
public int MilesRepay(int a, int b)
{
int y;
return y = (a*5)/100 + (b*2)/100;
}
}
他补充道
现在这个陷阱似乎被绊倒了,我能再次请你们解决这个问题吗?因为这可能又是一个简单的解决办法 尝试添加括号
lblMilesShow.Text = carry.ToString;
您需要使用carry.ToString,包括括号。ToString是一种方法。你需要使用括号。试试carry.ToString ToString是一种方法。您需要在方法名称后添加括号
lblMilesShow.Text = carry.ToString();
ToString不是一个属性,而是一个方法,用括号调用
lblMilesShow.Text = carry.ToString();
其他答案都没问题。ToString是一种方法。因此,使用方法名而不调用它意味着您正在向方法组传递引用,而不是执行方法本身的工作 carry.ToString是对函数ToString的引用 ToString调用实例carry上的ToString方法 但是,真的,我认为你完全错了,你不应该有两个文本框,你应该让这个人输入他们行驶的英里数。然后有一个函数为您执行此操作:
lblMilesShow.Text = carry.ToString();
或者类似的…正如其他人已经报告的那样,您必须使用括号 错误消息的解释是无法将方法组“ToString”转换为非委托类型,即不带括号的方法名称指定方法本身并将其解释为委托。它不调用该方法。如果要调用该方法并使用其返回值,请始终使用括号 可以将委托视为方法的内存地址。实际上,它是一个对象,封装了这个地址 接住的东西好像绊倒了
您的意思是在底部的catch块中捕获异常。如果是这种情况,我假设它只能是int.parse-calls之一的解析异常。您试图解析的内容不是int-可能是空字符串???@DavidHeffernan方法重载。ToString不是属性,它是一个方法,因此应该是ToString;你缺少开始和结束大括号。该死。我点击了这个问题,以为我要学习一些我以前从未听说过的编程概念。@ean5533你和我都是人。@Dan1676,你是否编辑了这个问题,其中的陷阱似乎是tripping[sic]部分?你将不得不添加更多细节,因为我个人不知道这意味着什么。更好的是,问一个新问题,因为人们已经回答了你的第一个问题。哦。。。这是家庭作业。或者说你有史以来最糟糕的雇主。
lblMilesShow.Text = carry.ToString();
public int MilesRepay(int miles)
{
return Math.Min(200, miles) * 0.05 + Math.Max(0, miles-200) * 0.02;
}