c#

    C# 제네릭 (C++ > 템플릿)

    using System; public class Test where T : class { public T Get_val(T _val) { return _val; } } public class Another { public static void Main() { Test int_test = new Test(); Console.WriteLine(int_test.Get_val(10)); } } 첫째 클래스 선언 라인에 보면 where T : class라고 명시 되어있다, Main 함수 내에 선언하고 있는건 int형이다, 따라서 아래와 같이 에러가 뜬다. C++와 가장 큰 차이점은 C#의 템플릿은 제약 사항이 많다는 것이다, SFINAE도 있겠지만 가장 큰 특징은 추상화를 할 수 없다는 점이다 따라서 아래는 에러..

    C# Delegate Event 사용법

    delegate 는 메서드를 가리킬 수 있는 타입의 간편 표기법. event도 간편표기법. event를 사용하면 정형화된 콜백 패턴을 구현하려할때 코드를 줄일 수 있음. - 조건 1. 클래스에서 이벤트(콜백)를 제공한다. 2. 외부에서 자유롭게 해당 이벤트(콜백)을 구독하거나 해지하는 것이 가능하다. 3. 외부에서 구독/해지는 가능하지만 이벤트 발생은 오직 내부에서만 가능하다. 4. 이벤트의 첫번째 인자는 이벤트를 발생시킨 타입의 인스턴스다. 5. 이벤트의 두번째 인자는 해당 이벤트에 속한 의미 있는 값이 제공된다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadi..

    C# 사용자 정의 전환 연산자(암시적/명시적)

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices.ComTypes; namespace ConsoleApp8 { public struct s_data { public string name = ""; public int hp = 0, mp = 0; public s_data() { } // 데이터 대입 public s_data(string _name, int _hp, int _mp) { name = _name; hp = _hp; mp = _mp; } } // 기본 캐릭터 클래스 public class Character { public s_data data = new s_dat..

    C# LINQ

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices.ComTypes; namespace ConsoleApp8 { class Profile { public int height; public string name = null; } class Program { // foreach로 해당 데이터들 접근가능, 람다식 형식이여야됨. // from : 데이터를 어디서 가져오는지 지정해주는 메소드, 대체 메소드 없음. // where : 가져온 데이터들에 조건을 거는 메소드, .Where()로 대체 가능. // let : // orderby : 가져온 데이터들을 정리해주는 메소드, as..

    C# 형변환 is as 키워드

    is는 객체가 해당 형식에 해당하는 지를 검사하여 bool 값을 결과로 반환. as는 형 변환 연산자와 같은 역할을 하지만, 형변환 연산자가 변환에 실패하는 경우에는 예외를 던지는 반면, as 연산자는 객체 참조를 null로 만든다. using System; class Mammal{} class Dog : Mammal{} class Cat : Mammal{} Mammal m1 = new Dog(); Dog dog; Cat cat; if(m1 is Dog) { dog = (Dog)m1; Console.WriteLine("m1 is dog"); } else Console.WriteLine("m1 is not dog"); if (m1 is Cat) { cat = (Cat)m1; Console.WriteLine..