C# 서버 개발자 전환기 2편
2026-09-14 20:34:10

C# 기본 문법 + LINQ

C#은 파스칼케이스로 작성하는듯

1. class

C#에서 객체의 구조를 정의한다.

1
2
3
4
5
6
public class User
{
public int Id { get; set; }
public string NickName { get; set; }
public int Level { get; set; }
}

객체 생성 및 초기화

1
2
3
4
5
6
7
8
9
10
11
12
var user = new User();

user.Id = 100;
user.NickName = "Alice";
user.Level = 30;

var user = new User
{
Id = 100,
NickName = "Alice",
Level = 30
};

2. List

여러 개의 객체를 저장할떄 사용한다

1
2
3
4
5
6
var users = new List<User> // C#은 타입이 있는 언어라 User타입만 저장 가능
{
new User { Id = 100, NickName = "Alice", Level = 30 },
new User { Id = 200, NickName = "Bob", Level = 40 },
new User { Id = 300, NickName = "Charlie", Level = 25 }
};

3. var

1
var user = new User();

C#의 var는 정적 타입을 유지하면서 타입을 컴파일러가 추론한다

4. foreach

1
2
3
4
foreach (var user in users)
{
Console.WriteLine(user.NickName);
}

5. LINQ

LINQ = Language Integrated Query
js에서 배열 메서드와 비슷하다 Where말고도 여러 가지 있으며 체이닝도 가능하다

5.1 Where()

조건에 맞는 데이터 필터링

1
2
var highLevelUsers = users.Where(u => u.Level >= 30);
// js users.filter(u => u.level >= 30);

Where()의 결과는 일반적으로 IEnumerable이다.

5.2 IEnumerable vs List

List는 실제 데이터를 담는 자료구조
IEnumerable는 데이터를 순회할 수 있다는 인터페이스

5.3 지연 실행

LINQ 코드를 작성했다고 바로 실행하는 게 아니라, 실제로 결과를 사용하려는 순간 실행한다

1
2
3
4
5
6
7
8
9
10
List<int> numbers = new() { 1, 2, 3 };

IEnumerable<int> result = numbers.Where(x => x > 1);

numbers.Add(4);

foreach (int x in result) // Where(x => x > 1)가 여기서 실행되는거
{
Console.WriteLine(x); // 2,3,4
}

IEnumerable 말고 List로 받기 위해 ToList()를 쓰면

1
2
3
4
5
6
7
8
9
10
List<int> numbers = new() { 1, 2, 3 };

List<int> result = numbers.Where(x => x > 1).ToList(); // Where(x => x > 1)가 여기서 실행

numbers.Add(4);

foreach (int x in result)
{
Console.WriteLine(x); // 2,3
}
Prev
2026-09-14 20:34:10