2015-02-03 2 views
2

저는 최근에 Microsoft Virtual Academy와 같은 무료 온라인 도구를 사용하여 코딩하는 방법을 스스로 배우기로 결정했으며 C#이 제 시작 언어가 될 것이라고 결정했습니다.Visual Studio는 어떻게 코드를 실행합니까?

초보자 대부분이 그렇듯이 나는 (너무 간단하기 때문에) 답을 찾지 못하는 것 같은 아주 기본적인 질문을 가지고 있습니다. 저는 Visual Studio를 사용하고 있으며, 필자가 작성한 코드를 통해 소프트웨어가 어떻게 실행되는지 알고 싶었습니다.

여기 내 추측입니다. 코드를 실행할 때 코드의 첫 번째 클래스이기 때문에 "클래스 Program1"의 작업 만 수행합니다. 일단 그 블록의 끝을 친다면, 콘솔을 닫을 때 (또는 좀더 기술적으로 ENTER를 눌렀을 때 콘솔을 닫을 때) 아무 것도 할 수 없습니다.

처음에는 "클래스 2"를 실행해야한다고 생각했지만 시도한 후에 예상대로 작동하지 않는 것을보고 나는 원하는대로 클래스 기능이 있다고 생각하게되었습니다 (첫 번째 나열된 - Program1이 경우) 호출해야합니다. VS가 내 코드를 어떻게 실행하는지에 대한이 올바른 이해가 있습니까? 용어의 혼동에 대해서도 사과드립니다. 미리 감사드립니다.

예제 코드 :

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

namespace Testing 
{ 
    class Program1 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("I'm Text!"); 
      Console.ReadLine(); 
     } 
    } 
    class Program2 
    { 
     static void Main2(string[] args) 
     { 
      Console.WriteLine("I'm More Text!"); 
      Console.ReadLine(); 
     } 
    } 
} 
+0

첫 번째 클래스가 진입 점이라는 가정이 맞는지 쉽게 테스트 할 수 있습니다. 두 클래스를 바꿔보고 무슨 일이 일어나는 지보십시오. 그런 다음 설명을 보려면 아래의 해답을보십시오. –

+1

또 다른 수정 사항이 있습니다. Visual Studio는 코드를 실제로 실행하지 않습니다. 그것은 CPU가 직접 실행하는 다른 것으로 컴파일 (변환)됩니다. Visual Studio는 상황에 따라 텍스트 편집기와 컴파일러를 호출하고 컴파일 된 프로그램을 실행하는 방법을 제공함으로써이를 용이하게합니다. – siride

+0

@ suiride가 말한 것. Visual Studio에서 코드를 실행하지 않습니다. CPU가 있습니다. 또는, 다른 방법으로 보면, 운영체제 (당신의 경우 Windows)는 : 프로그램을 메모리에로드하고,'Main' 메소드가 호출되는 이벤트 체인을 시작하는 Windows이기 때문에입니다. –

답변

3

당신은 기본적으로 정확합니다. 디폴트에서는, 개시시에 실행하는 서명이 static void Main(string[] args)의 메소드를 찾아냅니다 (반환 유형은 int이며 매개 변수도 허용되지 않습니다).

Main 메서드는 C# 콘솔 응용 프로그램 또는 Windows 응용 프로그램의 진입 점입니다. 라이브러리와 서비스는 Main 메소드를 엔트리 포인트로 요구하지 않습니다. 응용 프로그램이 시작되면 Main 메서드가 호출 된 첫 번째 메서드입니다. 당신이 실제로 (다른 클래스에서) 그 서명 하나 이상의 방법을 가질 수 있기 때문에

https://msdn.microsoft.com/en-us/library/acy3edy3.aspx

나는 "기본적으로"말한다. 이렇게하면 컴파일러 오류가 발생합니다.

오류 1 프로그램 'c : ... \ obj \ Debug \ MyProgram.exe'에 두 개 이상의 진입 점이 정의되어 있습니다. 'MyProgram.Program.Main []) '. 진입 점을 포함하는 유형을 지정하려면/main을 사용하여 컴파일하십시오.

그런 경우 컴파일 플래그 /main을 사용하여 실행을 시작해야하는 위치를 지정할 수 있습니다.

+1

Eric의 요점에 덧붙이 자면, 대부분의 경우 오직 하나의'Main' 메쏘드 만 프로그램에 가지고 있습니다. 프로그램 실행은 어딘가에서 시작해야하기 때문에 프로그램이 시작될 곳을 한 곳으로 지정하는 것이 좋습니다. 그렇지 않으면 나중에 개발자를 혼동하게됩니다. 그 동안에. –

관련 문제