티스토리 뷰

C#

새로운 개념들

살구르 2018. 3. 12. 17:38

-Nullable

int? a = null;


-ref, out

 -ref, out의 사용법은 동일

 -ref는 메서드로 전달되는 매개변수가 초기화 되어 있어야 전달가능

 -out은 메서드고 전달되는 매개변수가 초기화 되어 있지 않아도 전달 가능, 하지만 해당 메서드에서 초기화해주지 않으면 에러


-this(), base()

 -this는 본인의 생성자, base는 부모 클래스의 생성자


-named parameter

 -매개변수의 이름을 넣어서 전달(가독성 증가) ex) method(param1 : "value1", param2 : "value2")

 

-optional parameter

 -매개변수의 기본(디폴트)값을 설정하면, 해당 매개변수의 값은 전달해주지 않아도 디폴트로 저장됨

 ex) method(int a, int b=0) 


-가변길이 매개변수

 -params 키워드

 int sum(params int[] args) 


-sealed class : 상속이 불가능하도록

-public sealed void SealMe() : 재정의(오버라이딩) 불가능하도록, virtual로 선언된 가상 데소드를 오버라이딩한 버전의 메소드만 가능


-is , as

 is : 객체가 해당 형식에 해당 하는지를 검사

 as : 형변환, 변환 실패시 null 반환


ex) 

Mammal mammal = new Dog();

Dog dog;

if(mammal is Dog){

dog = (Dog)mammal;

dog.Bark();

}


ex)

Mammal mammal2 = new Cat();

Cat cat = mammal2 as Cat;

if(cat!=null){

cat.Meow();

}


-new : virtual 메소드가 아닌 메소드를 재정의(오버라이딩) 할 때 사용

 public new void MyMethod() 

 이 경우, 완전한 다형성을 표현할 수는 없음

 즉, 파생(자식) 클래스가 기반(부모) 클래스(base class)로 참조된 경우, 기반 클래스의 메서드가 호출되어버림..


-partial(분할 클래스)

 -클래스의 구현이 길어질 경우 여러 파일에 나워서 구현할 수 있게 함

(분할클래스 예)

namespace PartialClass

{

    partial class MyClass

    {

        public void Method1()

        {

            Console.WriteLine("Method1");

        }


        public void Method2()

        {

            Console.WriteLine("Method2");

        }

    }



    partial class MyClass

    {

        public void Method3()

        {

            Console.WriteLine("Method3");

        }


        public void Method4()

        {

            Console.WriteLine("Method4");

        }

    }



    class Program

    {

        static void Main(string[] args)

        {

            MyClass obj = new PartialClass.MyClass();

            obj.Method1();

            obj.Method2();

            obj.Method3();

            obj.Method4();

        }

    }

}




'C#' 카테고리의 다른 글

클래스와 구조체  (0) 2018.03.14
확장 메서드(Extension Method)  (0) 2018.03.14
6장. 연습문제  (0) 2018.03.12
5장. 연습문제  (0) 2018.03.12
4장. 연습문제  (0) 2018.03.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함