본문 바로가기

전체 글

(25)
클래스 - 3 (다형성, 오버라이딩, 메소드 숨기기, 오버라이딩 봉인) A. 오버라이딩과 다형성 다형성(Polymorphism) : 객체가 여러 형태를 가질 수 있음을 의미한다. 오버라이딩(Overriding) : 메소드 재정의 다형성은 원래 하위 형식 다형성(Subtype Polymorphism)의 준말이다. 다시말해 자신으로부터 상속받아 만들어진 파생클래스를 통해 다형성을 실현한다. 이때, 오버라이딩은 virtual 키워드를 통해 부모클래스에서 정의되고, 자식클래스에서 override 키워드를 통해 재정의한다. class ArmorSuite { public virtual void Initialize() { Console.WriteLine("Armored"); } } class IronMan : Armorsuite { public override void Initializ..
클래스 - 2 (this(), 접근한정자, 상속, base키워드, is/as, 기반/파생 클래스간 형변환) A. this( ) 생성자 class MyClass { int a,b,c; public MyClass() { this.a = 5425; } public MyClass(int b) { this.a = 5425; this.b = b; } public MyClass(int b, int c) { this.a = 5425; this.b = b; this.c = c; } } 위 코드는 문제는 없지만 세 개의 MyClass( ) 생성자 안에 똑같은 코드가 중복되어 들어가있다. 이 문제를 this( ) 생성자를 이용해 해결가능하며 생성자에서 자기자신의 생성자를 가리킨다. * this( ) 생성자를 사용할때는 생성자의 코드블록이 아닌 앞쪽에서만 사용이 가능하다. //this() 생성자를 적용시킨 코드 class MyCl..
클래스 - 1 (Static, 얕은/깊은 복사) A. Static (정적) 필드, Static (정적) 메소드 프로그램 전체에 걸쳐 공유해야 하는 변수, 메소드가 있다면 정적 필드, 정적 메소드를 사용하면된다. class Global { public static int Count = 0; } class ClassA { public ClassA() { Global.Count++; } } class ClassB { public ClassB() { Global.Count++; } } B. 객체 복사하기 1. 얕은 복사 (Shallow Copy) MyClass source = new MyClass(); source.MyField1 = 10; source.MyField2 = 20; MyClass target = source; target.MyField2 = 3..
메소드(Method) - 2 (오버로딩, 가변길이 매개변수, 명명된 매개변수, 선택적 매개변수, 로컬함수) A. 메소드 오버로딩 오버로딩(Overloading) : '과적하다'라는 뜻을 가진다. 메소드 오버로딩은 하나의 메소드이름에 여러개의 구현을 올리는것을 뜻한다. ex) Console.WriteLine(bool value) Console.WriteLine(int value) 이와같이 WriteLine() 메소드는 총 19개버전을 오버로딩하고있다. B. 가변길이 매개변수 C#은 같은형식의 매개변수의 "수"가 다른경우를 위해 "가변 길이 매개 변수"라는 기능을 제공한다. ex) static int Sum(params int[] args) { int sum=0; for(int i=0;i0) Console.Write(", "); Console.Write(args[i]); sum+=args[i]; } Console..
메소드(Method) - 1 (참조에의한 매개변수 전달, 결과를 참조로 반환, 출력전용 매개변수) C와 C++ 에서는 함수 (Function), 파스칼에서는 프로시져(Procedure), 혹은 다른언어에서는 서브루틴(Subroutine)이나 서브프로그램(Subprogram)이라 불렸다. 엄밀하게는 의미차이가 존재하지만, 큰 맥락에서 이 용어들은 같은용어를 지칭함. A. 참조에 의한 전달 (pass by reference) 1. 매개변수전달 메소드에서 매개변수로 전달된 변수를 직접 참조하여 변수값이 변경됨. (매개변수 자료형 앞에 ref를 붙인다) ex) static void Swap(ref int a, ref int b) { int temp=b; b=a; a=temp; } 2. 결과를 참조로 반환하기 메소드 호출자에게 반환받은 결과를 참조로 다룰수있도록 한다. 선언시 반환형 앞에 ref, 리턴뒤에 r..
코드의 흐름 제어 (do while, for each, 점프문) A. 반복문 1. do while문 조건식 평가하기전 무조건 한번 코드를 실행 - 예시코드 int a=10; do{ Console.WriteLine(a); a -= 2; }while(a>10); //끝에 ; 가 필수! 2. for each문 - 형식 foreach(데이터 형식 변수명 in 배열_또는_컬렉션) 코드 - 예시코드 int[] arr = new int[]{0,1,2,3,4}; foreach(int a in arr){ Console.WriteLine(a); } B. 점프문 C#에서의 점프문은 5가지 1. break 2. continue 3. goto 4. return 5. throw
Null 연산자 (Nullable 형식, Null 조건부 연산자) 먼저 Nullable 형식에 대해 정리 변수에 메모리공간을 비워두도록 만드는 형식(쓰레기값이 안들어간다) -선언 int? a=null; double? b=null; - Null 조건부 연산자 ( ?. ) C# 6.0이후 도입되었다. 해당객체 멤버에 접근하기전에 객체가 null인지 검사해서 결과가 참이면(객체가 null이면) 결과로 null 반환, 그렇지않으면 . 뒤에 지정된 멤버를 반환. ex) class Foo{ public int member; } Foo foo = null; int? bar; //nullable 변수선언 bar = foo?.member //foo 객체가 null이 아니면 member필드에 접근하게 해줌. C. 병합 연산자 (??) null 병합연산자는 왼쪽 피연산자 값이 null이 ..
문자열 서식 맞추기 (Format(), 문자열 보간) 1. Format() 메소드 기본적으로 Console.WriteLine("제목 :{0}", "이것이 C#이다"); 메소드 내부에서 String.Format() 메소드가 동작하고있다. - 구조 {첨자, 맞춤 : 서식 문자열} 첨자 : 서식 항목의 첨자 맞춤 : 왼쪽(-)/오른쪽 맞춤 서식문자열 : 변환 서식 지정 문자열 a. 맞춤기능 : 프로그램이 여러개의 항목을 가지런히 출력할때 필요하다. string result = string.Format{"{0}DEF","ABC"}; // result = "ABCDEF" string result = string.Format{"{0,-10}DEF","ABC"}; // result = "ABC DEF" string result = string.Format{"{0,10}..