본문 바로가기
728x90
반응형

c#31

interface Study about interface and abstract interface 클래스가 따라야하는 약속이다. 파생될 클래스가 어떤 메소드를 구현해야 할지 정의 interface ILogger { void WirteLog(string log); } class ConsoleLogger : ILogger { // 상속받은 클래스는 구현해야함 public void WriteLog(string message) { Console.WirteLine("{0} {1}", DateTime.Now.ToLocalTime(), message); } } public static void Main() { // 상속받은 클래스 인스턴스화 가능 ILogger logger = new ConsoleLogger(); logger.Writ.. 2021. 8. 25.
tuple Study about tuple Tuple 여러 필드를 담을 수 있는 구조체로 형식의 이름을 갖지 않고 임시적으로 사용할 복합 데이터 형식 선언에 적합하다 튜플은 명명되지 않은 선언 즉 필드 이름을 지정하지 않은 선언과 명명된 선언 다 가능 public static void Main() { var tuple = (123, 789); Console.WriteLine($"{tuple.Item1}, {tuple.Item2}"); var tuple2 = (Name: "Hugh", Age:23); Console.WriteLine($"{tuple2.Name},{tuple2.Age}"); } 컴파일러가 튜플의 모양을 보고 직접 형식을 결정하도록 var를 이용하여 선언한다. 튜플은 괄호 사이에 두 개 이상의 필드를 지.. 2021. 8. 22.
static Study about static static field and method static은 메소드나 필드가 클래스 자체에 속하도록 지정하는 한정자 인스턴스 소속 필드 vs 클래스 소속 필드 필드는 C++에선 멤버라고 생각 // 1번 class MyClass_Instance { public int a; } public static void Main() { MyClass mc = new MyClass(); mc.a = 1; } // 2번 class MyClass_class { public static int a; } public static void Main() { MyClass_class.a = 1; } 1번은 인스턴스 소속필드 2번은 클래스 소속 필드다. 2번의 경우 인스턴스를 만들지 않고 클래스의 이름.. 2021. 8. 22.
inheritance Study about inheritance inheritance & 'base' keyword 기반 클래스와 파생 클래스 사이에 형식 변환이 가능하다. is / as 키워드가 형 변환 연산자로 as는 참조형식에만 사용한다. 파생 클래스의 수명주기는 다음과 같다 class Base { protected int Age; // 1 public Base() { Console.WriteLine("Base()"); } // 4 ~Base() { Console.WriteLine("~Base()"); } public void BaseMethod() {} public Base(int age) { this.Age = age; } } class Derived : Base { // 2 public Derived() { Con.. 2021. 8. 22.
class 02 Study about class 중첩 클래스 클래스 안에 선언되어 있는 클래스로 소속되어 있는 클래스의 멤버에 자유롭게 접근 가능하다. (private 멤버도 가능) 클래스 외부에 공개하고 싶지 않은 형식을 만들거나 현재 클래스의 일부처럼 표현 가능한 클래스를 만들고자 할때 사용한다. class OuterClass { private int OuterMember; class NestedClass // 중첩클래스 { public void DoSomething() { OuterClass outer = new OuterClass(); outer.OuterMember = 10; } } } 확장 메소드 기본 클래스의 기능을 확장하는 기법 // 선언 방법 neamespace MyExtension { public st.. 2021. 8. 22.
class 01 Study about class class 객체를 만들기위해 사용하는것 Data - 속성 Method - 기능 생성자와 종료자(소멸자) 생성자는 클래스와 같은 이름으로 반환형식이 없다. 기본생성자와 사용자 지정 생성자가있다 종료자는 매개변수도없고 한정자도 사용하지 않으며 오버로딩 불가능하고 직접 호출할 수 없다. 종료자는 CLR의 가비지 컬렉터가 객체 소멸시점을 판단해 호출한다. 종료자는 가급적 구현안하는걸 추천 class JinHyung { public JinHyung() {} // 기본 생성자 public JinHyung(int age, float weight) {} // 사용자 지정 생성자 ~JinHyung() {} // 종료자 } Shallow copy & Deep copy 얕은 복사는 객체 복사.. 2021. 8. 22.
728x90
반응형