반응형 프로그래밍/C#117 C# 코드 컴파일 단계에 대해서 C# 코드 컴파일 C#은 강력한 형식(strongly typed), 어휘 범위(lexically scoped), 함수형(functional), 객체 지향(object-oriented) 및 구성 요소 지향(component-oriented) 프로그래밍 언어입니다. C# 코드는 어떻게 컴파일되고 실행되는지 알아봅시다. C# 코드 컴파일의 단계별 프로세스 C# 코드 작성 C# 컴파일러를 사용해서 코드 컴파일 컴파일러는 코드에 오류가 있는지 여부를 확인합니다. 소스 코드는 Common Intermediate Language (공통 중간 언어, CIL) 또는 Intermediate Language Code (중간 언어 코드, ILC 또는 IL코드)라고 하는 중간 코드로 변환됩니다. C#은 플랫폼 독립적 언어이므로.. 2023. 3. 29. C# Discards _의 정체 Discards _ 란 C#에서는 어플리케이션에서 의도적으로 사용되지 않는 임시 변수인 Discards를 제공한다. Discards 변수는 "_" (underscore, 언더스코어 혹은 underbar, 언더바)로 표시한다. 왜 무시 변수인 Discard가 필요한가? 별도의 변수를 선언 할 필요가 없다. 또한 discards를 사용하면 메모리 할당을 줄일 수 있다. 코드의 의도를 투명하게 만들고 가독성과 유지 관리성을 향상시키는데 도움이 된다. 예제 코드 switch를 사용한 패턴 매칭 class Program { static void ProvideString(string statement) => Console.WriteLine(statement switch { "x" => "hello, x world".. 2023. 3. 23. C# Equals()과 GetHashCode()를 함께 재정의 해야하는 이유 우리가 맞이하는 상황 프로그래밍을 하다보면 하나 이상의 필드를 Key값으로 설정하여 비교하게 되는 경우가 생기게 됩니다. 그리고 평소처럼 분명 같은 키값을 가진 객체를 ContainsKey() 함수로 비교하면 일치하지 않는다고 나올겁니다. hash 값을 사용하는 Collection(HashTable, Dictionary, ConcurrentDictionary)에서 ContainsKey로 실행하면 우선 GetHashCode() 메서드를 비교하고 그 다음에 Equals() 메서드를 실행합니다. 아무리 Equals() 메서드를 열심히 변경해도 그 앞쪽에서 비교가 일어나서 메서드가 실행되지 않습니다. 이 문제를 해결하기 위하여 하나 이상의 필드를 Key값으로 비교하기 위해서는 해당 클래스의 Equals 함수와 .. 2023. 3. 23. C# 괄호 알아보기 괄호 종류 한글 명칭영어 명칭()소괄호Round Brackets 또는 Parentheses[]대괄호Square Brackets 또는 Brackets{}중괄호Curly Brackets 또는 Braces홑화살괄호Angle Brackets 또는 Chevrons복합문에서의 중괄호 배치 (들여쓰기 스타일)중괄호는 사이에 문장이 입력되기 때문에 간격이 많이 벌어지게 된다. 그래서 이에 따른 많은 코딩 스타일이 존재하게 된다. 개인적으로는 Allman 스타일을 선호한다.중괄호 배치스타일while (x == y) { something(); somethingelse(); }Allmanwhile (x == y) { something(); somethingelse(); }K&Rwhile (x =.. 2023. 3. 20. C# 람다(Lambda)에 대해서 람다(Lambda)란? 람다는 무명 메서드(annoymous method)와 비슷하게 무명 함수를 정의하기 위해서 사용된다. 람다는 두 가지 형태 중 하나의 형태를 가진다. 람다식 (Lambda Expression) (parameters) => expression // 람다식으로 작성시 return 문을 생략할 수 있습니다. 람다문 (Lambda Statement) (parameters) => { statements; } // 람다문으로 작성시에는 return 문을 생략할 수 없습니다. => 는 람다 연산자라고 불립니다. Func lambda = parameter => expression; 파라미터가 하나라면 () 괄호를 생략할 수 있습니다. (p1, p2, p3) => expression; 파라미터가 .. 2023. 3. 20. C# 네이밍 규칙에 대해서 네이밍 종류 카멜 케이스 (Camel case) camelCase 파스칼 케이스 (Pascal case) PascalCase class, record, struct의 이름을 명명할 때 사용된다. 케밥 케이스 (Kebab case) kebab-case 스네이크 케이스 (Snake case) snake_case 정리 보통 코딩 컨벤션에 명시되기 때문에 알아두면 도움이 된다. C# 코딩 규칙 | 마이크로소프트 런 (microsoft.com) 지금 프로젝트의 명명법이 일관되게 적용되고 있는지 생각해보자. 아니면 미래에 프로젝트 시작 시에 어떤 명명법을 사용할지도 생각해 보자 2023. 3. 15. 이전 1 ··· 14 15 16 17 18 19 20 다음