C#/C# 문법
[ 인덱서 ] 인덱서(Indexer) : 색인 (속성+배열) 역할 : class 내의 배열,컬렉션을 외부에서 접근할 수 있도록 하는 역할 형식 : 속성 형식(get, set, return, value) + 배열 형식(this[int index]) // 방법1 객체명[index] = 값 또는 변수; //값을 배열의 해당 index 위치에 저장 (set) // 방법2 변수 = 객체명[index]; //해당 index의 값을 변수에 저장 (get) 정확한 사용 형식은 아래와 같다 : [접근한정자] 데이터형 this[int index]{ get{ } set{ } } //외부로부터 받아온 값을 set, 인덱서 배열에 저장된 값을 외부로 전달 get [ 속성 vs. 인덱서 ] 공통점 : 객체의 멤버 변수를 read..
우선, 속성으로 들어가기 전에 짚고 넘어갈 것이 있다. Java는 getter, setter를 사용한 DTO(Data Transfer Object)를 활용하여 객체지향 프로그래밍을 하지만, C#은 속성 get, set을 사용하여 캡슐화하여 객체 지향 프로그래밍을 한다. *캡슐화 : 한 class 안에 연관된 데이터를 묶고 정보를 숨겨서 class 자체를 캡슐처럼 만들기 [ 속성 ] 속성(Property) : class의 멤버변수 값을 읽기, 저장, 값 변경 변수는 읽기, 저장까지만 가능. 대상 : 접근 권한이 private, protected으로 선언된 멤버변수 public으로 선언 -> 이미 외부로 노출되어있으니까 속성을 사용할 필요가 없음 private으로 선언 -> 이 멤버변수 자체보다는 속성으로 ..
클래스는 상속 관계에 있으므로 참조 변환이 가능하다. "Upcasting" : 상위를 참조하여 하위 class를 통해 구현하기 (구현은 대입 연산자 '='을 사용) "Downcasting" : 하위를 참조 ex) A test = (A) objB; //B의 객체를 A의 참조변수로 사용 이건 박싱/언박싱과 다른 개념이다! 박싱 : 값 형식을 object형으로 변환 언박싱 : object형을 기존 값 형식으로 변환 반드시 cast를 사용하여 데이터형을 명시해야함 박싱/언박싱 [ 박싱 ] 박싱 (boxing) : data type을 최상위 object형으로 변환하여 힙 메모리에 저장. → 힙(heap) 메모리 = 임시로 사용하는 메모리 int m = 123; object obj = m; // int형 변수를 o..
[ 오버라이드 ] 오버라이드(Override) : 무시하다. 상위메서드를 무시하고 하위에서 재정의 하는 것. 대상 : class의 메서드, 속성, 인덱서, 이벤트 사용 형식 : 상위 class에 "virtual" 명시, 하위 class에 "override" 명시 상속과 연관이 있음 class A { //하위 class에서 재정의할거면 외부에서 접근 가능한 public으로 선언해야함 public virtual void Print(){ ... } } class B : A { public override void Print(){ ... } } class C { class A 호출 //class B가 A를 재정의했기 때문에, A 호출하는 건 B를 호출하는 것과 같음. } [ 오버로드 ] 오버로드(Overload..
[ 상속 ] 상속(Inheritance) : 기존 클래스에 새로운 것을 추가하여 클래스를 재사용하는 것. 즉, class1을 훼손하지 않고도 여기에 다른 특징을 추가하고 싶은 경우, class1을 부모로 두고 상속받아서 다른 기능을 추가한 class2를 생성하는 방식. 대상 : 클래스 부모 클래스 : 상속을 하는 클래스 (상위 클래스), 나누어주는 입장 자식 클래스 : 상속을 받는 클래스 (하위/파생 클래스), 나눔 받는 입장 상속관계에서 생성자 호출 == 상위 class 먼저 생성된 후, 하위class가 생성됨 소멸자 호출 == 하위 class가 먼저 소멸된 후, 상위 클래스의 소멸자가 호출됨 "base" : 상위 클래스의 생성자 또는 멤버변수/메서드 호출시 사용되는 키워드 사용하는 경우: A를 상속받..
스트림 (stream) : 파일, 네트워크 등에서 데이터를 바이트 단위로 읽고 쓰는 클래스 → "using System.IO"를 앞에 선언하는 방식 // 예시 using System.IO.FileStream; [ FileStream ] FileStream : 파일의 입출력을 다루는 기본 클래스 byte[] 배열로 데이터를 읽고 저장하므로 형변환이 필요함 파일 정보 설정에 사용됨: public FileStream( string path, //경로 FileMode mode, //모드 FileAccess access //접근성 ) → FileMode.열거형 Append, Create, CreateNew, Open, OpenOrCreate, Truncate → FileAccess.열거형 Read, ReadWri..
예외 : runtime 시 발생할 수 있는 오류 [ 예외 처리 방법 ] 1. if-else문 2. try-catch문 (나는 주로 이걸 사용!) try { // 예외가 발생할 수 있는 소스코드 작성 } catch( Exception ex ) { MessageBox.Show(ex.ToString()); //예외 처리 } 위의 코드에서 객체 "ex"는 에러에 대한 정보를 가지고 있는 예외 처리 객체이다. (예외 처리 담당). 예외 종류마다 객체가 다름 : System.Exception 파생 객체 사용하는 예외 : OverFlowException, FormatException, DivideByZeroException, FileNotFoundException 등 IndexOutOfRangeException : ..
[ Data type 변환하는 함수 ] 데이터 변환 1 : Convert.To타입() //예시 Convert.ToInt32(); // int형 Convert.ToSingle() // float형 데이터 변환 2 : 타입.Parse(___) //예시 Int32.Parse( 문자열입력 ) // int형 float.Parse() // float형 [ 자동 형 변환 ] 자동 형 변환 : 서로 다른 형의 혼합 연산을 하면 필요한 기억장소의 크기가 작은 쪽에서 큰 쪽으로 자동 확장 변환 char(1byte) < short(2) < int(4)