본문 바로가기

C#41

C# 연산자 오버로딩과 인덱서(Indexer) 기본적인 연산자 오버로드오버로드 가능한 연산자들1. 단항 연산자2. 이항 연산자3. 비교 연산자오버로드할 수 없는 연산자1. 조건부 논리 연산자2. 인덱스 접근인덱서 (Indexer)3. 변환 연산자 (캐스트)implicit과 explicit4. 이진 연산자5. 불가능한 연산자 class를 열심히 만드는 과정에서, C#에서 기본적으로 지원하는 연산자들에 기능을 부여할 수 있다! vector 클래스를 만든다고 쳤을 때 +가 vector의 합을 계산하도록 기능하게 만들 수 있다는 것. 기본적인 연산자 오버로드 public class Vector2 { private int _x; public int X { get; set; } private int _y; public int Y { get; set; } pub.. 2023. 8. 21.
C# 생성자와 소멸자 그리고 가비지 컬렉터 생성자 (Constructor)소멸자 (Destructor)가비지 컬렉터 (GC) 생성자와 소멸자를 새로 알아본다는 느낌보다는 정확히 언제 호출되는지, 어떻게 작성해야하는지 등의 이야기를 위주로 해보겠다. 생성자 (Constructor) class Person { private string name; private int age; // 매개변수가 없는 디폴트 생성자 public Person() { name = "Unknown"; age = 0; } // 매개변수를 받는 생성자 public Person(string newName, int newAge) { name = newName; age = newAge; } public void PrintInfo() { Console.WriteLine($"Name: {.. 2023. 8. 17.
C# 언어 기본 구조 들어가며기본 구조리터럴 (literal)변수 이름에 대해키워드식별자 규칙코드 컨벤션참고) Visual Studio 단축키 들어가며제목을 기본 구조….라고 했지만, 사실상 C# 및 에디터 잡기술 모음집이다.개발에서 사용되는 각종 언어들의 의미, 그리고 C#은 대부분 Visual Studio를 사용하기 때문에 해당 에디터 단축키 등을 한 게시글에 모아서 정리해보고자 한다. 기본 구조// Hello World.cs using System; namespace HelloWorld { class program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } using : 네임스페이스를 사용하기 위한 코드System 네임스페이스.. 2023. 8. 14.
[내일배움단] 사전캠프 C# TIL 8. 알아두면 좋을 것들 Generic참고) object 타입Generic의 기본 구조InterfaceabstractinterfaceProperty자동구현 Propertydelegate콜백 (Callback)대리자(Delegate)델리게이트 체이닝(Delegate Chaining)EventLambda무명 메서드 (Anonymous Function)람다의 형식람다 일반화 (Action, Func)Exception다양한 Exception 사용 예제ReflectionAttributeNullable C#에서 필요한 잡다한 것들을 정리해놓으려고 한다. Generic 일반화를 위한 기능이다. 특정 자료구조를 내가 직접 한 번 만든다고 해보자.자료구조니까 모든 자료형을 받을 수 있어야 할텐데, 이를 직접 구현한다 생각하면 쉽지 않아 보인다... 2023. 7. 25.
[내일배움단] 사전캠프 C# TIL 7. 클래스와 객체 절차 지향 프로그래밍객체 지향 프로그래밍 (Object Oriented Programming, OOP)구조체 (struct) vs 클래스 (class)스택 (Stack) vs 힙 (Heap)스택 (Stack)힙 (Heap)생성자static에 대해객체 지향 프로그래밍의 특성상속성은닉성다형성 드디어 나왔다. 객체.C#을 배울 때에 있어서 가장 중요한 부분이자 내가 가장 자신 없는 부분.학교에서 컴퓨터 아키텍쳐, 운영체제, 멀티코어 및 GPU 프로그래밍까지 배웠음에도.나는 객체지향에 대해 배운적이 없었다.그래서 자신이 없을 뿐더러 내가 처음부터 객체를 생성하고 관리하는 식의 프로젝트를 거의 해본 적이 없기 때문에, 자신이 없는 것이다.어차피 이번에 유니티 엔진을 다루면서 질리도록 다룰테니 걱정은 말자.배우는 .. 2023. 7. 21.
[내일배움단] 사전캠프 C# TIL 6. 함수 함수의 기본적인 형태return매개변수매개변수의 복사참조 방식 (ref)out함수 오버로딩 함수의 기본적인 형태 메소드(method)라고도 한다.C++에선 함수(Function), 다른 언어에서는 Procedure라고도 하지만 C#은 아무래도 객체가 메인이라 메소드를 주로 사용하는듯. 코드를 재사용할 수 있게 기능들을 묶어 만들어놓은 구조이다.사실 지금까지 Console.Writeline()이나 int.TryParse() 등 여러 가지 함수를 사용해오고 있었다.함수를 언급할 때 뒤에 괄호 ()를 꼭 붙이는 건 이것이 함수라고 명시해주는 것. 함수 형식은 다음과 같다.[한정자] [반환 형식] [함수 이름] ([매개변수]) { [함수 실행 내용] } 쉽게 말해 함수 이름 앞에 오는 반환 형식은 함수가 출력으.. 2023. 7. 21.
[내일배움단] 사전캠프 C# TIL 5. 배열 배열 선언참고) 스택(Stack)과 힙(Heap)배열의 저장과 활용foreach다차원 배열ListDictionary 배열 선언 string[] game = new string[3]; 간단….하지만 기존 언어와 비교해봤을 때 굉장히 많은 것이 보인다. 일단 string[], int[] 같이 자료형에 배열이라고 명시를 해준다.이런 점은 확실히 좋다.C#에서도 나중에 char[]와 string의 차이를 찾아보는 것이 좋겠다. 가장 당황했던 점은 처음부터 new, 즉 동적할당을 사용했다는 것이다.찾아보니 배열을 정적할당하는 것은 불가능한가보다.이래서 알고리즘 문제 풀이 때 C#을 잘 안쓰는건지. 참고) 스택(Stack)과 힙(Heap)정적할당 vs 동적할당, 스택(Stack) vs 힙(Heap), 값 형식(Va.. 2023. 7. 21.
[내일배움단] 사전캠프 C# TIL 4. 제어문 조건문if 조건문else if와 elseswitch와 case참고) 상수와 열거형조건부 논리 연산자의 활용삼항연산자연습문제3연습문제4연습문제5반복forwhiledo while연습문제6연습문제7break와 continue 조건문 크게 두 가지가 있다. if와 switch. if 조건문 if ( 조건 ) { 실행 내용 } 간단하다. 조건이 true면 중괄호 {} 안의 내용을 실행, 아니라면 패스.주의해야할 점은 조건에 들어가는 내용이 반드시 bool 형식이어야 한다는 것.좀 더 엄밀히 말하면 bool 형식으로 암시적 캐스팅이 가능한 것들도 넣을 수 있다. 다른 언어들은 0(false)과 0이 아닌 것들(true)도 조건으로 가능하지만, C#의 경우 그렇지 않으니 주의할 것. if (3 > 1) // true.. 2023. 7. 20.
[내일배움단] 사전캠프 C# TIL 3. 연산자 산술 연산사칙연산증감 연산 (++, --)문자열 연산논리 연산정리표bool 자료형비트 연산정리표참고) 연산자의 순서연습문제 산술 연산사칙연산 int x = 10; int result; // 더하기 result = x + 3; // result : 13 Console.WriteLine(result); // 빼기 result = x - 5; // result : 5 Console.WriteLine(result); // 곱하기 result = x * 2; // result : 20 Console.WriteLine(result); // 나누기의 몫 result = x / 3; // result : 3 Console.WriteLine(result); // 나누기의 나머지 result = x % 3; // resu.. 2023. 7. 19.
[내일배움단] 사전캠프 C# TIL 2. 데이터 다루기 변수의 생성과 저장변수의 활용변수의 수정자료형정수실수문자열과 문자참고) 문자열에 데이터 넣기참고) var자료형 정리표형변환 (Casting)숫자 → 숫자다른 자료형 → 문자문자 → 다른 자료형참고) 명시적 변환연습 문제 변수의 생성과 저장 string codingClub = "팀스파르타"; int year = 2023; 다음과 같이 변수를 생성하고 저장할 수 있다.물론 출력을 해놓은 상황이 아니기 때문에 프로그램 실행해도 아무것도 보이지 않는다. 변수의 활용 string codingClub = "팀스파르타"; int year = 2023; Console.WriteLine(codingClub); Console.WriteLine(year); 다음과 같이 출력을 위한 함수를 작성해 그 안에 변수를 넣어주게 되.. 2023. 7. 18.