C++은 main함수를 작성하고 출력을 하기 위해선 iostream 헤더파일을 추가한 뒤 아래와 같이 코드를 작성해야 한다.
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
하지만, C#은 다르다. 헤더파일을 추가할 필요도 없고, main 함수도 클래스 내부에 속해야 한다.
일단 코드를 먼저 보자. C#은 아래와 같이 작성된다.
using Sysyem;
public class MainClass
{
static int Main()
{
Console.WriteLine("Hello World!");
return 0;
}
}
먼저, 눈에 띄는 것은 System이라는 네임스페이스이다.
해당 네임스페이스 안에는 Write, WriteLine와 같은 콘솔출력 함수도 있고 그 외에도 닷넷 프레임워크 시스템 단위에서 지원해주는 많은 기능들이 있다. C++의 std와 유사하다고 보면 될 것 같다.
C#은 C++과 달리 헤더파일이라는 개념이 없기 때문에 특별한 전처리기 구문 없이도 기능을 사용할 수 있다. System 네임스페이스에 있는 기능을 그냥 가져다 쓰면 된다.
그 다음으로 볼 것은 진입점 함수(Main 함수)가 클래스 내부에 있다는 것이다. C#은 C++과 달리 완전한 객체지향 언어이기 때문에 클래스 외부에 함수가 존재할 수 없다. 그렇기 때문에 진입점 함수도 클래스 내부에 선언해야 한다.
하지만, 클래스 내부에 진입점 함수를 선언하게 되면 한 가지 문제가 있다. 일반적인 멤버함수는 인스턴스가 생성되지 않으면 호출할 수 없다는 것이다. 즉, 프로그램이 실행되었는데도 Main함수에 접근할 수 없다는 의미이다.
(객체를 생성하려면 객체 생성 코드를 실행해야 하는데, 가장 처음으로 실행되는 코드가 Main 함수 호출 코드이기 때문에 Main 함수를 호출할 수 없게 된다.)
이러한 문제를 해결하기 위해 Main 함수는 반드시 static 함수로 선언해야 한다.
(위에 코드를 보면 static으로 선언되어 있다.)
마지막으로 살펴볼 것은 WriteLine함수이다. WriteLine는 C의 printf나 C++의 std::cout 과 유사한 기능을 가지고 있다. 입력받은 문자열을 콘솔에 출력하는 기능이다. 다만, WriteLine 함수는 자동으로 개행(줄바꿈)문자를 문자열의 끝에 삽입해준다.
WriteLine("안녕");
WriteLine("잘가");
라고 작성한다면, 콘솔에는 아래와 같이 출력된다.
C#에는 WriteLine말고 Write라는 함수도 있다.
Write함수는 개행문자를 삽입하지 않는다. printf나 cout과 동일한 결과를 보인다는 것이다.
Write("안녕");
Write("잘가");
와 같이 코드를 작성한다면 콘솔에는 아래와 같이 출력된다.
또한, C++과 차이를 하나 더 보자면, C++은 대부분의 함수가 소문자로만 작명되어있다.반면, C#은 파스칼 케이싱(단어의 앞문자를 모두 대문자로 표기)을 사용하는 듯 하다. 필자처럼 파스칼 케이싱을 자주 사용하는 사람이라면 C#이 꽤나 잘 맞을 수도 있다.
'C# > C#' 카테고리의 다른 글
C# - const, readonly (0) | 2024.08.10 |
---|---|
C# - is, as 연산자 (0) | 2024.08.07 |
C# - 클래스, 접근 제한 지정자, 프로퍼티 (0) | 2024.07.27 |
C# - C#의 자료형 (0) | 2024.07.24 |
C# - C#과 .NET 프레임워크 (2) | 2024.07.23 |