2014-10-31 2 views
-3

할당되지 않은 출력 매개 변수 'q'와 'g'의 오류 사용이 잘못되어있는 부분을 수정하십시오. 미리 감사드립니다. 그것은 확실히 할당 된 것 전에 out 매개 변수에서을 읽을 당신이 에 노력하고 -할당되지 않은 출력 매개 변수 'q'사용

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     int p = 23; 
     int f = 24; 
     Fun(out p, out f); 
     Console.WriteLine("{0} {1}", p, f); 

    } 
    static void Fun(out int q, out int g) 
    { 
     q = q+1; 
     g = g+1; 
    } 
} 
+4

는 소리. 당신은 그것이 무엇을하는지 이해하지 못하는 것 같습니다. – Servy

답변

7

은 당신이 잘못하고있는 것은 컴파일러 당신이 잘못하고있는을 말한다 정확히이다. 당신의 코드를보고 : 각각의 경우에

static void Fun(out int q, out int g) 
{ 
    q = q+1; 
    g = g+1; 
} 

는 할당 식의 오른쪽은 출력 매개 변수를 사용하고, 그 밖의 매개 변수는 아직 값이 제공되지 않았습니다. out 매개 변수는 처음에는 명확하게 할당되지 않으므로 메서드가 반환되기 전에 예외가 할당되어야합니다 (예외를 제외하고)

두 패러미터를 모두 늘리려면 0-을 사용해야합니다.

static void Fun(ref int q, ref int g) 
{ 
    q = q+1; 
    g = g+1; 
} 

이상 단순히 :

static void Fun(ref int q, ref int g) 
{ 
    q++; 
    g++; 
} 

당신이 호출 코드를 변경해야합니다 : 당신은`out`에 대한 문서를 읽어 갈 필요가 같은

Fun(ref p, ref f); 
+0

즉 매개 변수를 사용하여 수행 할 수 없다는 의미입니까? – Maddy

+0

@Maddy : 메서드 내에서 매개 변수를 지정하기 전에 매개 변수의 값이 필요한 작업을 수행 할 수 없습니다. 'int p, f;를 쓸 수 있었다는 것을 명심하라. Fun (out p, out f); -이 경우에 값이 무엇을 기대합니까? –

+0

당신의 방법에서 얻은 것과 같은 대답이지만, 도움을 받아서 파라미터를 얻으려고했습니다 ... – Maddy

관련 문제