如何在c#中纠正这个错误?

时间:2017-01-25 10:23:35

标签: c#

程序没问题,但是有一个小错误。在我发布具有不同错误的相同程序之前,现在它显示出新的错误。

using System;
class Methodcalling
{
    public void Values(int num1, int num2)
    {

        if (num1 > num2)
        {
            Console.WriteLine("num2 is large ");
        }
        else
        {
            Console.WriteLine("num1 is big");
        }
    }
    static void Main(string[] args)
    {
        int a, b;
        Methodcalling m = new Methodcalling();


        Console.WriteLine("enter a no.:");
        a = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("enter a no.:");
        b = Convert.ToInt32(Console.ReadLine());

        int result = m.Values(a, b);

    }
}
  

错误:无法隐式转换类型' void'到' int'

5 个答案:

答案 0 :(得分:2)

您的方法GetProcAddress已声明为Values() - 不返回任何内容的方法。

这样做:

void

您希望该方法返回int result = m.Values(a, b); 值。

因此,您应该在int中更改代码(只需调用您的方法):

Main

将您的方法更改为:

m.Values(a, b); // without int result =

并添加public int Values(int num1, int num2) // int instead of void 语句以从该方法返回一些值:

return

在这种情况下,最好不要更改方法(本答案中的第一种情况),因为您不进行任何计算,只需打印到return 0; // your value instead of 0 即可。所以,没有什么可以回归的。

答案 1 :(得分:1)

您正试图将任何内容(void)分配给int:

int result = m.Values(a, b);

您有两种选择:

public void Values(int num1, int num2)更改为public int Values(int num1, int num2)并返回有用的内容(

或者

不要分配结果,只需拨打m.Values(a, b);

即可

答案 2 :(得分:0)

在这一行

int result = m.Values(a, b);

您调用的方法Values不返回任何值(void

public void Values(int num1, int num2)

您可以调用这样的方法:

m.Values(a, b);

或重新设计Values方法以返回一些值。

答案 3 :(得分:0)

您正尝试从m.Values方法接收值。但是您将返回值声明为void,这意味着您不希望您的方法返回值。

将您的声明从void更改为int并返回一个int值,具体取决于if case

答案 4 :(得分:0)

每个方法都返回一个在方法签名中声明的值(execpt一个void方法)。

例如:

public int Values(int num1, int num2){
    return num1 + num2;
}

return int type,

public float Values(int num1, int num2){
    return num1 + num2;
}

返回浮动类型。

然后我们有void方法,什么都不返回。 Void可以做很多事情,但总是没有回报价值。

int result = m.Values(a, b);中的

你试图强制你的void方法返回int