2015-06-19 2 views
-8

Я знаю, как передавать переменные в процедуру, но как вернуть переменную в вызывающую процедуру? Например, это мой синтаксис, никаких проблем при передаче в переменной arr, но как я могу вернуть значение nummmm обратно в Main? Пожалуйста, проигнорируйте пустое sqlconnection & заявление об обновлении и т. Д., Они действительны в моем действительном синтаксисе.Return Variable From Method

namespace ConsoleTest 
{ 
    class Test 
    { 
    public static string SQLConnectionString = ""; 
    public static string updatestatement = null; 
    public static string[] arrArray; 
    public int 

    static void Main(string[] args) 
    { 
     arrArray = new string[3] { "1412", "1618", "1223" }; 
     foreach (string arr in arrArray) 
     { 
      runupdates(arr, out nummmm); 
     } 
    } 

    private static int runupdates(string arr, out int nummmm) 
    { 
     updatestatement = ""; 
     using (SqlConnection connection = new SqlConnection(SQLConnectionString)) 
     { 
      connection.Open(); 
      using (SqlCommand command = new SqlCommand(updatestatement, connection)) 
      { 
      command.CommandText = updatestatement; 
      int nummmm = command.ExecuteNonQuery(); 
      connection.Close(); 
      } 
     } 
    } 
    } 
} 

Модифицированный код теперь дает ошибку компиляции 'Не все пути кода возвращают значение.

+0

@Shaharyar это пример C#, я никогда не использовал 'out' –

+0

Знаете ли вы, что ключевое слово 'void' означает ..? и если вы никогда не использовали 'out', а затем google, он появился сейчас. void означает, что метод или процедура не возвращаются/не возвращаются. Однако вы все равно можете обмануть его, используя слово' out' key .. better начните читать и понимаете основы, потому что, если кто-то дал вам правильную подпись метода, как бы вы это поняли? – MethodMan

+6

Вам нужно изучить основы C#. https://msdn.microsoft.com/en-us/library/1h3swy84 – SLaks

ответ

1

Просто используйте функцию, чтобы вернуть значение. Вам не нужен дополнительный выходной параметр.

private static int runupdates(string arr) 
{ 
    updatestatement = ""; 
    using (SqlConnection connection = new SqlConnection(SQLConnectionString)) 
    { 
     connection.Open(); 
     using (SqlCommand command = new SqlCommand(updatestatement, connection)) 
     { 
     command.CommandText = updatestatement; 
     int nummmm = command.ExecuteNonQuery(); 
     connection.Close(); 
     } 
    } 
    return nummmm; 
} 
+1

Это возвращает * значение *, а не * переменную *. Большая разница. – Servy

+1

Не для нового программиста ... –

+1

@Servy OP даже не знает о возврате значения, может быть, он спрашивает то же самое, но не знает, как задать – Shaharyar

-2

Если вы хотите вернуть значение из метода, вы должны указать его. Тип «void» означает, что ваш метод не собирается возвращать значение. В вашем случае, если вы хотите вернуть int, измените тип «void» на «int» и добавьте возвращаемое предложение

+0

. Функция уже является int. –