2017-01-25 4 views
-4

Программа в порядке, но есть небольшая ошибка. Прежде чем я разместил одну и ту же программу с другой ошибкой, но теперь она показывает новую ошибку.Как исправить эту ошибку в 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); 

    } 
} 

ERROR: Cannot implicitly convert type 'void' to 'int'

+0

потому что вы метод значения() тип возвращаемого значения является недействительным, и это обыкновение возвращать ничего. Но вы пытаетесь получить возвращаемое значение и задаете его переменной int –

+0

Ну да - ваш метод имеет тип возврата 'void', но вы пытаетесь присвоить результат значению' int'. Что вы ожидаете от этого? Что вы ожидаете вернуть «Ценности»? Вам действительно нужно это, чтобы вернуть значение вообще? Вы можете просто вызвать метод, не делая ничего с несуществующим возвращаемым значением - это не похоже на то, что вы используете «результат» впоследствии. –

+0

Посмотрите тип возврата вашего метода 'Values' ... – Pikoh

ответ

2

Ваш метод 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 

В этой ситуации лучше не менять метод (первый случай в этом ответе), потому что вы не делаете никаких вычислений и просто печатаете до Console. Так что возвращаться нечего.

1

Вы пытаетесь не присвоить ничего (void) к междунар:

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

У вас есть два варианта:

изменения public void Values(int num1, int num2) к public int Values(int num1, int num2) и вернуть то, что полезно, если это применимо;

Или

Не назначайте результата, просто вызовите m.Values(a, b);

0

В этой строке

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

вызывается метод Values, который не возвращает значения (void)

public void Values(int num1, int num2) 

You может просто вызвать метод вроде это:

m.Values(a, b); 

Или перепроектировать Values метод вернуть некоторое значение.

0

Вы пытаетесь получить значение от вашего метода m.Values. Но вы указали возвращаемое значение как void, что означает, что вы не хотите, чтобы ваш метод возвращал значение.

Изменить декларацию от void к int и возвращает целочисленное значение в зависимости от случая, если

0

Каждый метод возвращает значение (execpt Пустота методы), объявленный в подписи вашего метода.

Например:

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

возвращения целого типа,

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

тип возвращаемого значения с плавающей точкой.

И тогда у нас есть метод void, который ничего не возвращает. Void может делать много вещей, но всегда не имеет возвращаемого значения.

int result = m.Values(a, b); в вы пытаетесь заставить ваш недействительным метод возврата INT