
C# 언어는 무료 플랫폼 간 오픈 소스 개발 환경인 .NET Platform에서 가장 널리 사용하는 언어입니다. C# 프로그램은 IoT(사물 인터넷)디바이스에서 클라우드에 이르기까지 다양한 디바이스 환경에서 실행될 수 있습니다. 휴대폰, 데스크톱,랩탑 컴퓨터 및 서버용 앱을 작성할 수 있습니다.
C#은 2007년 7월에 개최된 Professinal Developers Conference(PDC)에서 .NET 프로젝트와 함께 발표된 객체 지향 프로그래밍 언어로 마이크로소프트에서 개발하며, 1983년에 등장한 C++과 1955년에 등장한 JAVA에서 영향을 밭았습니다.
C#을 알아보기전에 C#을 작동시킬 만한 프로그램이 필요합니다.
Visual Studio 설치 및 기본 설정 기능 선택
Visual Studio를 신속하게 설치하는 방법을 알아봅니다. 설치 공간을 줄이려면 기본 설정 기능을 선택하세요.
learn.microsoft.com
마이크로 소프트 공식 홈페이지에서 Visual Studio를 다운 받을 수 있습니다.

사이트에 들어가 스크롤을 내리면 이렇게 세가지 버전으로 다운 받을 수 있는데 첫번째 커뮤니티 무료버전을 다운받아 주세요.

다운로드 파일을 실행하면 이런 화면이 나옵니다. 여기 해당 프로그램들은 개발 시 필요한 프로그램들 이므로 우선 C#만 알아보는 거니까 .NET 데스크톱 개발만 체크후 설치 버튼 눌러줍니다.

다운 받는데 시간이 좀 소요되니까 여유롭게 기다려 주시면 됩니다 ^^

다운받고 이런 테마 선택화면이 나오는데 여러분의 취향에 맞게 선택하시면 되겠습니다.
![]() |
![]() |
![]() |
visual studio를 실행하면 이렇게 화면이 뜨는데 새 프로젝트 만들기를 누르고 빈 솔루션을 선택해 다음 버튼을 누른후 저장할 위치를 설정하고 만들기를 눌러줍니다.

프로젝트가 만들어지면 이렇게 ConsoleApp1 에 종속성 안에 cs파일이 하나 만들어집니다. 이파일이 C#의 실행파일입니다. 먼저 cs파일안에 문자를 넣어서 실행해보겠습니다.
Console.WriteLine("Hello, World!");
![]() |
![]() |
위에 보시면 버튼하나가 있는데 이것을 눌러 실행하면 cmd 화면이 켜지면서 Hello Wolrd가 출력됩니다. C#의 주석도 기존에 VS Code 에서 사용하는 // 이 주석입니다.
using System;
class Hello
{
static void Main()
{
// Hello Wolrd 출력
Console.WriteLine("Hello, World");
}
}
C# 프로그램에서 사용하는 구성 요소를 보여줍니다. "Hello World" 프로그램은 System 네임스페이스를 참조하는 using 지시문으로 시작합니다. 네임스페이스는 계층적으로 C# 프로그램 및 라이브러리를 구성하는 방법을 제공합니다.
네임스페이스에는 형식 및 기타 네임스페이스가 포함됩니다. 예를 들어 System 네임 스페이스는 프로그램에서 참조되는
Console 클래스와 같은 많은 형식과 IO 및 Collections와 같은 기타 많은 네임스페이스가 포함되 있습니다.
지정된 네임스페이스를 참조하는 using 지시문을 활용해 해당 네임스페이스의 맴버인 형식을 정규화하지 않는 방식으로 사용할 수 있습니다 using 지시문 때문에, 프로그램은 Console.WriteLine을 System.Console.WriteLine의 약식으로 사용할 수 있습니다.
"Hello, World" 프로그램에서 선언된 Hello 클래스에는 단일 맴버인 Main 메서드가 있습니다. Main 메서드는 Static 한정자로 선언됩니다. 인스턴스 메서드는 키워드 this를 사용해 특정 바깥쪽 개체 인스턴스를 참조할 수 있지만 정적 메서드는 특정 개체에 대한 참조 없이 작동합니다.
최상위 문이 없다면 Main이라는 정적 메서드가 C# 프로그램의 진입점 역할을 합니다.
익숙한 C# 기능들
C#은 초보자가 접근하기 쉬우면서도 특정 어플리케이션을 작성하는 숙력된 개발자를 위한 유용한 기능을 제공합니다. 빠르게 생산성을 높일 수 있고, 사용자의 응용 분야에 필요한 전문적인 기술 습득도 할 수 있습니다.
C# 앱은 .NET 런타임의 자동 메모리 관리를 사용합니다. C# 앱은 .NET SDK에서 제공하는 광범위한 런타임 라이브러리도 사용합니다. 파일 시스템 라이브러리, 데이터 수집, 수학 라이브러리와 같은 일부 구성 요소는 플랫폼 독립적입니다.
다른 것들은 ASP.NET Core 웹 라이브러리 또는 .NET MAUI UI 라이브러리와 같은 단일 워크로드에만 해당됩니다. C#은 C언어 계열에 속합니다. C,C++, JavaScript 또는 Java를 사용해본적이 있다면 C# 구문이 익숙할 것입니다.
C계열의 모든 언어와 마찬가지로 세미콜론( ; )은 문자 끝에 정의합니다. C# 식별자는 대/소문자를 구분합니다. C#에서 중괄호 {} 및 }, if , else 및 switch 와 같은 제어 문, for 및 while 과 같은 반복 구문을 동일하게 사용합니다.
독특한 C# 기능
C#의 일부 요소는 익숙하지 않을 수 있습니다, LINQ(언어 통합 쿼리)는 모든 데이터 컬렉션을 쿼리하거나 변환하는 일반적 패턴 기반 구문을 제공합니다. LINQ는 메모리 내 컬렉션, XML 또는 JSON과 같은 구조화된 데이터, 데이터베이스 스토리지, 심지어 클라우드 기반 데이터 API를 쿼리하기 위한 구문을 통합합니다. 하나의 구문 집합을 학습하면 스토리지에 관계없이 데이터를 검색하고 조작할 수 있습니다.
다음 쿼리는 평점 평균이 3.5 보다 큰 모든 학생을 찾습니다.
var honnerRoll = from student in Students
where student.GPA > 3.5
select student;
앞의 쿼리는 Students로 표시되는 다양한 스토리지 유형에 대해 작동됩니다. 개체 컬렉션, 데이터베이스 테이블, 클라우드 스토리지 Blob 또는 XML 구조일 수 있습니다. 모든 스토리지 유형의 동일한 쿼리 구문이 작동됩니다.
작업 기반 비동기 프로그래밍 모델을 사용하면 비동기적으로 실행되더라도 동기적으로 실행되는 것처럼 읽는 코드를 작성할 수 있습니다. 비동기식 메서드와 식이 비동기식으로 평가되는 경우를 설명하기 위해 async 및 await 키워드를 활용합니다. 다음 코드는 비동기 웹 요청을 기다리는 코드입니다. 비동기 작업이 완료되면 매서드는 응답 길이를 반환합니다.
public static async Task<int> GetPageLengthAsync(string endpoint)
{
var client = new HttpClient();
var uri = new Uri(endpoint);
byte[] content = await client.GetByteArrayAsync(uri);
return content.Length;
}
C#에서는 GrphQL 페이징 API 와 같은 비동기 작업으로 지원되는 컬렉션을 반복하는 await foreach문도 지원합니다. 다음 샘플에서는 데이터를 청크로 읽고, 사용가능한 경우 각 요소에 대한 엑세스를 제공하는 반복문을 반환합니다.
public static async IAsyncEnumerable<int> ReadSequence()
{
int index = 0;
while(index < 100)
{
int[] nextChunk = await GetNextChunk(index);
if (nextChunk.Length == 0)
{
yield break;
}
foreach(var item in nextChunk)
{
yield return item;
}
index++;
}
}
호출자는 awiat foreach 문을 사용해 컬렉션을 반복할 수 있습니다.
await foreach (var number in ReadSequence())
{
Console.WriteLine(number);
}
C#은 패턴 일치를 제공합니다. 이러한 식을 사용한다면 데이터를 검사하고 해당 특성에 따라 결정을 내릴 수 있습니다. 패턴 일치는 데이터 기반 제어 흐름에 대한 훌륭한 구문을 제공합니다. 다음 코드는 패턴 일치 구문을 사용해 and, or 및 xor연산의 메서드를 표현하는 방법을 보여줍니다.
public static bool Or(bool left, bool right) =>
(left, right) switch
{
(true, true) => true,
(true, false) => true,
(false, true) => true,
(false, false) => false,
};
public static bool And(bool left, bool right) =>
(left, right) switch
{
(true, true) => true,
(true, false) => false,
(false, true) => false,
(false, false) => false
};
public static bool Xor(bool left, bool right) =>
(left, right) switch
{
(true, true) => true,
(true, false) => true,
(false, true) => true,
(false, false) => false,
};
패턴 일치 식은 모든 값에 대한 catch all 로 _를 사용하여 간소화할 수 있습니다.
public static bool ReducedAnd(bool left, bool right) =>
(left, right) switch
{
(true, true) => true,
(_, _) => false,
};
마지막으로 .NET 에코시스템의 일부로 Visual Studio 또는 C# DevKit과 함께 Visual Studio Code를 사용할 수 있습니다. 이러한 도구는 사용자가 작성하는 코드를 포함해 C#에 대해 풍부한 이해를 돕습니다.
변수 선언 및 사용
첫 번째 프로그램 화면에 string 문자인 "Hello, World"를 실행해보았고 여러 C# 기능도 알아보았습니다. 이제 변수 선언과 사용법을 알아보겠습니다. C# 에서 첫번째 프로그램 메세지는 하나만 출력할 수 있습니다. 변수를 사용하여 유용한 프로그램을 더 많이 작성할 수 있습니다.
변수는 여러 값을 활용해 동일한 코드를 실행하는 데 사용할 수 있는 기호로 아래 코드를 입력해보겠습니다.
string aFriend = "Chery";
Console.WriteLine(aFriend);
첫번째 줄에 aFriend 변수를 선언하고 "Chery"값을 선언합니다. 두번째 줄에 이름을 출력해봅니다.
선언한 변수 값은 여러 값으로 할당이 가능합니다. 이름을 친구 이름으로 변경할 수 도 있습니다.
string aFriend = "Chery";
Console.WriteLine(aFriend);
aFriend = "Maria";
Console.WriteLine(aFriend);
string 으로 선언한 aFriend 변수를 삭제하지 않고 동일한 aFriend 변수로 저장된 값에 따라 두 가지 다른 메세지를 출력할 수 있습니다. 또한 두 메세지에 "Hello"라는 단어가 누락되 있음을알 수 있습니다. 이것을 Hello를 앞에 추가해서 출력해보겠습니다.
Console.WriteLine("Hello" + aFriend);
+ 를 사용해 변수 및 상수 문자열에서 문자열을 빌드했습니다. 이번에 { 및 } 문자 사이 변수를 배치해 텍스트를 변수 값으로 바꾸도록 C#에 지시할 수 있습니다.
이것을 문자열 보긴이라 합니다. 문자열의 여는 따옴표를 앞에 $를 추가해 중괄호 사이 문자열 안에 aFriend 같은 변수를 포함할 수 있습니다.
Console.WriteLine($"Hello {aFriend}");
Hello World - 소개 대화형 자습서
이 자습서에서는 브라우저를 사용하여 C#을 대화형으로 학습할 수 있습니다. C# 코드를 작성하고 브라우저에서 직접 코드를 컴파일하고 실행한 결과를 확인할 수 있습니다.
learn.microsoft.com
'게임 모딩 > C#' 카테고리의 다른 글
[C#] 6. C# 프로그램의 일반적인 구조체 (0) | 2025.01.27 |
---|---|
[C#] 5.목록 형식을 사용한 데이터 컬렉션 관리 (0) | 2025.01.26 |
[C#] 4.분기 및 루프 문이 포함된 조건문 (0) | 2025.01.26 |
[C#] 3. 정수 및 부동 소수점 수 조작 (0) | 2025.01.25 |
[C#] 2.C# 문자열 작업 (0) | 2025.01.25 |