1.튜플(Tuple) C# 7 부터는 튜플(Tuple)을 사용하여 메서드로부터 복수 개의 값들을 리턴할 수 있게 되었다! (List나 배열로도 출력이 가능하겠지만 아무래도 좀 불편했다) 파이썬이랑 문법이 상당히 유사하다. 뭐 튜플이 다 거기서 거기겠다만,,빠르게 예제로 배우자! var person = ("Alice", 25);//기본적인 튜플 형식, 당연하겠지만 var로 선언이 가능하다. var person = (Name: "Alice", Age: 25);//요소에 이름도 지정이 가능하다. public static (string, int) GetPerson() { string name = "Alice"; int age = 25; return (name, age); } //와 같이 매서드의 반환 형식으로도..
1. is 연산자에 새로운 기능이 추가됐다. 기존에는 ==로만 가능했던게 is로도 가능하다고 한다. 근데 이게 가독성은 좋긴한데(이것도 잘 모르겠음,,) 다른 기능이 있나 찾아보니까 없다고 한다. 그냥 된다 정도만 알아두자. if(str == null) //이랑 if(str is null) //이랑 같다. 2-1. 타입 패턴(Type Pattern) 이게 무엇인고 하니 기존에는 #1,2의 예제만 가능했는데 #3의 예제를 사용해서 더 편리해졌다 이건 좀 유용할듯 하다. #기존코드 1 if (animal is Dog) { ((Dog)animal).Bark(); } #기존 코드 2 Dog dog = animal as Dog; if (dog != null) { dog.Bark(); } #새로운 기능 !!! if..
nullable을 제외하고는 솔직히 잘 사용을 안하는지라 까먹은 부분들이 많아서 다시금 한번 정리를 해보려고한다. 1.yield yield는 C#에서 iterator(반복자)를 생성할 때 사용하는 키워드다. iterator는 반복 가능한 컬렉션을 만들기 위해 사용되며, 데이터의 소스를 순회하고 데이터를 하나씩 반환하는 데 사용된다. 예제코드 public IEnumerable GetNumbers() { for (int i = 1; i
1.Expression-bodied member 간단한 프로퍼티나 메서드들을 대체하는 형식이다. 자주 사용하는 문법이었고 그저 람다식의 일종으로 알고 있었는데 이름이 따로 있었다니.. //메서드 대체 예시 public void MethodA() { Console.WriteLine("AAA"); } public void BodyA => Console.WriteLine("AAA"); //프로퍼티 대체 예시 public string GetA { get { return "A"; }} public string BodyGetA => "A" 2.catch/finally 블럭에서 await 사용 IDbConnection conn; try { //... var response = await req.GetResponseA..
평소에 인터페이스만 사용했기에 딱히 abstract class에 대해서 따로 사용해본적이 없었는데 차이점을 배울 겸 간단하게 적어본다. 추상 클래스 인터페이스 접근 지정자 반드시 public이어야 하는 추상 메서드를 제외한 모든 멤버는 private으로도 선언될 수 있다. 명시하지 않아도 모든 메서드는 public으로 고정이다. 재정의도 반드시 public이어야 한다. 구현 추상 메서드를 제외한 모든 메서드는 구현을 포함할 수 있다. 구현을 포함할 수 없다. 속도 비교적 빠르다. 비교적 느리다. 하지만 무시할 수 있는 수준이다. 인스턴스화 할 수 없다. 할 수 없다. 필드 가질 수 없다. 가질 수 있다. 메서드 모든 형태의 메서드를 가질 수 있다. 추상 메서드만 가질 수 있다. abstract 키워드를 ..
1.리플렉션의 정의 C#에서 리플렉션(Reflection)은 실행 중인 프로그램에서 현재 타입(Type)에 대한 정보를 가져오거나 조작할 수 있는 기능을 제공합니다. 즉, C# 코드에서 작성한 클래스나 구조체 등의 타입(Type) 정보를 프로그램 실행 중에 얻을 수 있으며, 이를 이용하여 인스턴스 생성, 메소드 호출 등 다양한 작업을 수행할 수 있습니다. 2.왜 쓰는거지 ? 코드에서 작성한 클래스, 구조체, 메소드, 필드, 프로퍼티, 이벤트 등의 정보를 가져올 수 있습니다. 또한, 가져온 정보를 이용하여 인스턴스를 생성하거나 메소드를 호출할 수도 있습니다. 이렇게 가져온 정보를 이용하여 프로그램을 동적으로 조작하는 기능을 제공하므로, 유연한 프로그래밍이 가능 3.주의점 리플렉션을 이용할 때는 코드의 안전..