2014-01-13 2 views
3

Visual Studio 2010 Express에서 "연결할 수없는 코드가 감지되었습니다"라는 경고를 어떻게 피할 수 있습니까? 설명서에서 C#을 배우고 있습니다. 간단한 방법을 만드는 연습입니다. 저는이 책에 쓰여있는대로 정확하게 예를 들어갑니다. 감사.연결할 수없는 코드가 발견되었습니다. C# (절대 초보자)

public class Multiply 
{ 
    //Multiplies argument by 4 

    public static int MultiplyBy4(int aNumber) 
    { 
     return 4 * aNumber; 
     //Shows ways of passing various arguments to a method public static void Main 
     int x = 7; 
     int y = 20; 
     int z = -3; 
     int result = 0; 

     result = MultiplyBy4(x); 
     Console.WriteLine("Passsing a variable, x : {0}", result); 

     result = MultiplyBy4(y + 2); 
     Console.WriteLine("Passing an expression, Y + 2: {0}", result); 

     result = 5 + MultiplyBy4(z); 
     Console.WriteLine("Using MultiplyBy4 in an expression: {0}", result); 
     Console.ReadLine(); 
    } 
} 

내가 수동 논평을 이해하지 않습니다 는 매개 변수와 반환 값과 방법을 생성 한 후 "공공 정적 무효 메인하는 방법에 여러 가지 인수를 전달하는 방법을 보여줍니다." MultiplyBy4가 x, y, z를 "aNumber"로 인식하는 방법을 어떻게 만듭니 까? 어쩌면 이것은 지체 된 질문 일지 모르지만 저는 여기에서 붙어 있습니다. 감사합니다. .

+0

한 번에 하나씩 여러 섹션을 주석으로 처리하고 차례로 시도해보십시오. return'4 * aNumber' 문은 메소드를 끝내고 다음 코드는 실행되지 않습니다. 그 점을 주석으로 시작하십시오. –

+2

다른 설명서가 필요하다고 생각합니다. 이것은 끔찍한 예입니다. –

+0

나는 주석 처리를 시도했지만 아무 것도하지 않았다. 나는 이것이 끔찍하다는 데 동의한다. 여기까지는 괜찮 았어. 이제 완전한 어둠입니다. – user3190322

답변

4

여기서 return 문이 함수를 종료합니다.

X, Y, Z 및 결과, 그리고 실행되지 않을 것 Console.Write의 그래서 선언 ...

+0

자, 어떻게 수정하고 작동하게합니까? 반환 값을 제거하면 메서드가 없습니다. 경고의 원인을 알면 해결 방법이 제공되지 않습니다. 내 지식은 현재 시점에서 매우 제한적이므로 – user3190322

+0

리턴 뒤에있는 모든 것은 Main (또는 적어도 당신의 프로그램의 주요 기능에서) IMHO, 운동을 잘 이해한다면 – cubitouch

+0

나는 메인에 모든 것을 넣었습니다. 모두 붉은 색이었습니다.이 바닥에 도달하는 데 6 개월이 걸릴 것이라고 생각합니다. 방법이없는 프로그래밍 스타일을 채택하겠다 – user3190322

0

모든 문 return 문 이후에 도달 할 수 없습니다. 결코 실행되지 않고 컴파일러가 알려줍니다. 문을 실행할 수 없습니다 경우에 연결할 수 있기 때문에

그것은 경고 컴파일 시간

Unreachable Statements MSDN

+0

컴파일 시간 오류, 그 컴파일 시간 경고. 비록 내가 항상 개인적으로 항상 경고를 모든 사람이 아닌 오류로 다루지 만. – Chris

+0

오류가 아닌 컴파일 타임 * 경고 *입니다. –

+0

아무 것도 실행되지 않습니다. 와이. 이것이 내가 지금까지 배운 것입니다. – user3190322

0

이 때문에 방법이없는 그 의지로, 함수의 각 라인을 실행하는 코드 당신은 당신이 당신의 함수가 일부 코드 앞에 기능을 종료 :이 코딩 실수

public class Multiply 
    { 
//Multiplies argument by 4 

      public static int MultiplyBy4(int aNumber) 
      { 
       return 4 * aNumber; // <---- You exit the function MultiplyBy4 here 

       // Everything beneath this line will never get executed 
       // -------------------------------------- 

//Shows ways of passing various arguments to a method public static void Main 
       int x = 7; 
       int y = 20; 
       int z = -3; 
       int result = 0; 

       result = MultiplyBy4(x); 
       Console.WriteLine("Passsing a variable, x : {0}", result); 

       result = MultiplyBy4(y + 2); 
       Console.WriteLine("Passing an expression, Y + 2: {0}", result); 

       result = 5 + MultiplyBy4(z); 
       Console.WriteLine("Using MultiplyBy4 in an expression: {0}", result); 
       Console.ReadLine(); 
      } 
} 

이 컴파일러가 감지 무엇이며, 그것으로부터 경고, 대부분의 경우에서와 같이.

또한 return 문을 이동하고 함수의 끝에서 함수를 종료하면 코드로 인해 StackOverflow가 발생합니다 (우리가 SO : P와 같이 얼마나 아이러니한지). MultiplyBy4(z);

이렇게하면 프로세서가 100 % 이동하여 함수 호출을 포함하는 메모리 부분을 채 웁니다.

0

cubitouch가 말한 것처럼 return 문은 함수에서의 실행을 중단합니다.

if-clause에 여러 개의 return 문을 사용할 수 있습니다. 그러나 적어도 하나의 return 문이 모든 곳에서 도달 할 수있는 함수에 있어야합니다 (예 : 조건이 충족되지 않음).

일반적으로 return 문은 함수의 마지막 명령입니다.

8

주석 줄이 엉망이며 Main 메서드의 정의가 포함되어 있습니다. 코드는 다음과 같아야합니다.

public class Multiply 
{ 
     //Multiplies argument by 4 
     public static int MultiplyBy4(int aNumber) 
     { 
      return 4 * aNumber; 
     } 

     //Shows ways of passing various arguments to a method 
     public static void Main(string[] args) 
     { 
       int x = 7; 
       int y = 20; 
       int z = -3; 
       int result = 0; 

       result = MultiplyBy4(x); 
       Console.WriteLine("Passsing a variable, x : {0}", result); 

       result = MultiplyBy4(y + 2); 
       Console.WriteLine("Passing an expression, Y + 2: {0}", result); 

       result = 5 + MultiplyBy4(z); 
       Console.WriteLine("Using MultiplyBy4 in an expression: {0}", result); 
       Console.ReadLine(); 
      } 
} 
+0

좋은 캐치 그러나 이것은 주제를 벗어난 질문을 만듭니다. – Steve

+0

당신이 말했듯이 나는 그것을 적었지만 지금은 4 개의 빨간 오류가 있습니다. 나는 머리에 자신을 쏘고 싶다. – user3190322

+0

당신이 옳았습니다. 이것은 방법이 작동하는 방법입니다, 지금은 이해합니다. 나는 새로운 프로젝트를 열고 처음부터 모든 것을 썼다. {{{}}이 (가) 너무 많거나 너무 적은 문제가있는 것으로 보입니다. 콘솔은 모든 결과를 한 번에 표시합니다. 고맙습니다. – user3190322