C#/C#정리

    [C#] 메소드 오버로드

    오버로드는 return은 무시하고 이름만같은 메소드가 매개변수의 수, 개별 매개변수 타입 만 다르게 재정의되는 경우를 말한다. 오버로드는 크게 메소드 오버로드와 연산자 오버로드로 나뉜다. class Math { public int Abs(int value) { return (value >= 0) ? value : -value; } public double Abs(double value) { return (value >= 0) ? value : -value; } public decimal Abs(decimal value) { return (value >= 0) ? value : -value; } }

    [C#] 메소드 오버라이드(딩)

    메소드를 덮어씌워서 자식 클래스에서 사용하는 것 메소드 오버라이딩시 virtual, override 예약어를 사용한다. virtual 부모 클래스에서 메소드 정의 시 class Mammal { virtual public void Mode() { Console.WriteLine("움직인다."); } } override 자식 클래스에서 메소드 오버라이딩시 class Lion : Mammal { override public void Mode() { Console.WriteLine("네 발로 움직인다."); } } new 만약 부모클래스에 있는 메소드와 단순히 이름이 똑같은 (여기서는 Move) 메소드를 자식 클래스에서도 정의하고 싶다면 자식클래스에서 new 예약어로 만든다. 그렇지않으면 경고가 난다. clas..

    [C#] 접근제한자 총 정리

    private ( 기본 ) 내부에서만 접근을 허용한다. protected 내부에서의 접근과 함께 파생 클래스에서만 접근을 허용한다. public 내부 및 파생클래스에서의 접근뿐만 아니라 외부에서도 접근을 허용한다. internal 동일한 어셈블리(실행파일) 내에서는 public에 준한 접근을 허용한다. 다른 어셈블리에서는 접근할 수 없다. internal protected protected + internal 동일 어셈블리 내에서 정의된 파생 클래스까지만 접근을 허용한다. (protected internal로도 지정가능하다)

    [C#] 정적멤버, 인스턴스멤버

    정적 멤버(static) 정적 필드 : 클래스의 객체가 생성될 때마다 횟수를 증가시키는 필드를 정의한다고 할 때 인스턴스 필드는 new로 할당 받은 객체마다 고유하게 메모리를 확보하기 때문에 클래스 전역적으로 값이 유지되지않는다. 이를 보완하기 위해 나온게 정적 필드 class Person { // static 예약어로 정적 필드로 만든다. static public int Count; // 인스턴스 필드 public string _name; // 인스턴스 메소드 public Person(string name) { Count ++; _name = name; } } 정적 메소드 : 정적 필드와 같으며, 대신 필드 사용시 정적 필드만 사용이 가능하다. 인스턴스 멤버 인스턴스 : new연산자를 거쳐서 메모리에 ..

    [C#] as, is 차이점

    as as는 형변환이 가능하면 지정된 타입의 인스턴스 값을 반환 가능하지않으면 null을 반환 null 반환 여부를 통해 형변환이 성공했는지 판단할 수 있다. is 캐스팅이 가능하면 true 캐스팅이 불가능하면 false를 return 단지 가능한지 불가능한지만 판단 가능 → 이제 is에서 as의 기능도 사용가능하다.