Static 그리고 Main
2024. 12. 18. 14:40ㆍ개발/C#
이 글은 박상현님의 '이것이 C#이다 개정판'을 참고하여 공부한 내용입니다.
Static
C와 C++의 Static 한정자를 알고 있다면 C# Static의 사용법도 알 수 있습니다. Static은 가시성과 단일성을 제어하며, C++ 에서는 Static 메서드를 통해 인스턴스를 사용하지 않고 바로 호출이 가능합니다. 바로 호출이 가능하다는 점은 Static을 사용하는 순간 그 함수 혹은 변수는 전역으로 설정, 데이터 메모리에 할당되어 프로세스의 시작과 끝을 함께한다는 것을 추론할 수 있게 해줍니다. 더 나아가 C#은 Static 클래스, Static 생성자, Static 로컬함수를 지원합니다. 여기서 로컬함수란 메서드 내에서 선언되는 함수를 뜻합니다.
Static 구분
C | C++ | C# | |
Static 전역변수 | 파일 내 가시성 | 파일 내 가시성 | 없음 |
Static 지역변수 | 값 유지 | 값 유지 | 없음 |
Static 클래스 | 없음 | 없음 | 인스턴스 불가 모든 속성, 메서드가 Static |
Static 속성 | 없음 | 클래스 범위 가시성, 단일성 | 클래스 범위 가시성, 단일성 |
Static 메서드 | 없음 | 인스턴스 없이 호출 가능 | 인스턴스 없이 호출 가능 |
Static 생성자 | 없음 | 없음 | 클래스 로드시 한번 실행 |
Static 로컬 | 없음 | 없음 | 주변 지역변수의 간섭 제한 |
C#은 C, C++과 달리 모든 함수와 변수는 클래스 내에서 관리됩니다. 그렇다면 C#의 프로세스 진입점은 어떻게 선언해야 할까요?
Main
C, C++은 main() 전역함수를 통해 메모리에 할당되고 진입점으로 프로세스를 시작할 수 있습니다. 하지만 C#은 완전 객체 지향 프로그래밍 언어로 모든 코드는 클래스 내부에 존재 해야하며 캡슐화 되어야 합니다. 그래서 데이터에 할당하여 시작하기 위한 방법이 Static 메서드 입니다.
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("여러분, 안녕하세요?\n반갑습니다.");
}
}
Static 메서드를 사용하여 Main()을 데이터 영역에 메모리를 할당하고 CLR을 통하여 실행하게 됩니다.
'개발 > C#' 카테고리의 다른 글
C# 프로퍼티 (0) | 2025.02.12 |
---|---|
C# 종료자, Finalize, IDisposable (0) | 2025.02.12 |
C# 참조에 의한 매개변수 전달 (0) | 2025.02.11 |
C#의 데이터 타입 (1) | 2024.12.20 |
C# 그리고 .NET (0) | 2024.12.17 |