c# 5

C# - ??, is, as 연산자와 패턴 일치 기법

?? ?? 연산자는 null 판별할 때 쓰인다. string result = str ?? "str is null"; 만일 str 이 null이면 오른쪽에 있는 "str is null" 이 result에 들어가고null이 아니라면 str 그대로 result에 들어간다. ??=str ??= "str is null"; 이런식으로 쓰이면 만일 str이 null이면 "str is null"이 str에 들어가고null이 아니면 str 값 그대로 유지하는 것이다. str ??= GetDefaultValue(); 이런식으로 null일 때는 기본값을 설정하는 함수의 반환값으로 설정할 수도 있다. is is는 영어 is랑 비슷하게 생각하면 된다. A is B하면 A == B로 생각할 수 있다. 다만 is 뒤에는 변수가 오..

C# 2024.06.17

C# 인터페이스와 열거형

클래스서 다중 상속을 사용하지 않는 이유가 있다. A 클래스로 부터 B, C가 상속을 받고 D가 B, C를 상속받으면 다이아몬드 구조가 되어B, C가 동일한 A 클래스로부터 상속을 받았기에 둘이 같은 멤버, 메서드 중 뭔 골라야 할지 모호해지는 문제점이 존재한다. 또한 당연히 다중 상속을 하면 클래스 간의 계층 구조가 복잡해지며 일관성을 유지하기 위해 C#에서는 다중 상속은 지원하지 않는다. 인터페이스 클래스는 다중 상속이 안되지만 다중 상속을 지원하는 인터페이스가 있다.인터페이스는 클래스에게 "이렇게 구현을 해!" 라고 제시를 해주는 설계도일 뿐이고 실제 구현은 클래스에서 이루어진다. // 인터페이스 1public interface IItemPickable{ void PickUp();}// 인터페..

C# 2024.04.26

C# OOP와 클래스

객체 지향 프로그래밍(OOP)의 특징과 클래스와 객체에 대해 서술하는 시간을 가져볼 것이다. 객체지향 프로그래밍의 특징 캡슐화 관련된 데이터와 기능을 하나의 단위로 묶어 사용한다. 캡슐로 된 약을 생각해보자  두통약도 있고 해열제도 있고 진통제도 있을 것이다. 각자 해야할 역할(기능)에 따라 캡슐화했으며 캡슐을 부수지 않는 내용물을 볼 수가 없다. 캡슐화를 통해 정보를 은닉이 가능하고 외부에서의 직접적인 접근을 제한할 수 있는 것이며 만일 어떤 약에 문제가 생기면 각각의 것만 수정하면 되기에 각각의 안정성과 유지보수성을 높일 수 있다. 또한 기능 별로 묶여있기에 필요한 기능이 있다면 새롭게 구현하는 것이 아닌 포함만 하면 되는 것이다. 두통도 해열도 하고 싶으면 새롭게 만드..

C# 2024.04.24

C# 연산자와 문자열 처리

본론에 앞서 이 블로그는 어디까지나 본인의 학습을 위해 정리를 해두는 곳이라 이미 잘 알고 있는 정보는 가볍게 서술하고 헷갈리거나 잊어버리기 쉬운 개념일수록 빨간색에 가깝게 표시해뒀다. 연산자 산술연산자: 사칙연산과 같은 숫자를 대상으로 사용하는 연산자 ex) +, -관계연산자: 두 값을 비교하여 True, False 값을 반환 ex) >, 논리연산자: True 혹은 False 값을 대상으로 쓴다. ex) &&, ||, ! 이 세가지는 잘알고 있는 연산자지만 비트연산자는 생소할 수 있어 좀 더 자세히 다뤄본다. 비트연산자 비트연산자: 비트(bit) 단위로 연산을 수행하는 연산자 비트는 0과 1로 구성되어 있음, 다시 말해 2진수이다. 더보기2진수를 나타내는 리터럴은0..

C# 2024.04.23

유니티 C# OrderBy와 ThenBy

using System.Linq; 시스템의 Linq를 사용했을 때 쓸 수 있는 기능 int[] arr = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 }; arr = arr.OrderBy(x => Random.Range(0f, 7f)).ToArray(); 만일 위와 같이 배열을 선언하고 OrderBy를 통해 정렬하면 어떻게 정렬이 되는가 위의 코드는 짝맞추기 게임에 활용되는 코드라 0,0 1,1 2,2 이렇게 배열에 짝을 맞추는 숫자가 있는 것인데 좀 더 쉬운 예시를 들면 int[] arr = { 0, 1, 2 }; arr = arr.OrderBy(x => Random.Range(0f, 3f)).ToArray(); 위와 같이 있다해보자 OrderBy는 시퀀스의 ..

유니티 2024.04.15