C#의 기초 요약
모든 번역기준은 마소 런닝센터 기준으로 함. 나는 마소 런닝 센터와
책을 요약한것임.
객체지향이란 무엇인가?
1.상속 - 개방 폐쇄의 원칙에 따라 코드 재사용을 개선하고, 소프트웨어 유지보수성을 향상시키는 수단(최근에는 상속보다 컴포지션을 쓴다고 하지만 보수적인 사람들은 역시 아직도 상속을 말하는게 안전하다). 상속의 주된 목적은 서브 클래스의 공통 속성을 모아 함께 관리하고, 쉽게 사용할 수 있도록 하는 것.
상속을 사용한다는 것은 서브 클래스에 공통된 특성이 있다는 것에 동의한다는 의미
부모클래스에서 설정된 공통 특성을 추출하고 전달함.
따라서 상속은 전달성을 가즘
전달 메커니즘
A->B
B->C
C는 A의 특성을 가진다.
상속의 단일성 C#에서 클래스는 하나의 클래스에서만 상속할 수 있으며, 둘 이상의 부모 클래스를 가질 수 없다.
2.캡슐화: 캡슐화는 데이터와 동작의 조합으로, 코드 제약 조건의 동작을 통해 데이터의 범위를 수정하여 데이터의 보안을 강화하는 것으로,
보통은 이정도로 C# 캡슐화 구현을 설명함
즉, 다른 사람이 사용할 수 있도록 패키징한 후 복잡한 로직은 매우 편리하고,
원하는 결과를 얻기 위해 필요한 매개 변수를 전달하기만 하면 내부에서 어떻게 구현되는지 이해할 필요가 없는 것.
3.다형성: 다형성은 서로 다른 환경에서 동일한 이름의 메서드가 서로 다른 성능에 적응하는 것을 말하며, 메서드 동적 표시의 수단.
다형성은 객체가 둘 이상의 상태를 가질 수 있는 능력과 객체의 하위 클래스가 부모 유형의 변수에 할당될 수 있는 능력을 일컬음.
2. 값 및 참조형식
값 형식: 모든 단순유형(int, float, bool,char),Struct(구조체),enum.
Syste.ValueType에서 상속됨.
참조 형식: string,object,class,interface,delegate,array
System.Object에서 상속됨.
2-1이게 무슨차이인가요?
-값 형식은 메모리 스택에 저장되고, 참조 형식 데이터는 메모리 힙에 저장된다. 메모리 셀은 힙에 저장된 주소를 보관함
-값형식은 액세스 속도가 빠르고, 참조 형식은 엑세스 속도가 느림. 값형식은 '실제' 데이터를 나타내고, 참조 형식은 메모리 힙에 저장된 데이터에 대한 포인터와 참조를 나타냄.
-스택 메모리는 자동으로 해체되고, 힙 메모리는 GC(가비지 컬렉션)에 의해 자동으로 해체됨
-값형식은 System.ValueType에서 상속
-참조형식은 System.Object에서 상속
-요약하자면 값 형식은 스택에 직접 값 저장, 참조 형식은 힙에 참조의 '주소'를 저장
3. 오버로딩과 오버라이딩의 차이점
3-1. 위치차이
캡슐화, 상속,다형성간의 위치가 다르다. 오버로딩은 동일한 클래스내에서 발생, 오버 라이딩은 부모-자식 클래스간에 발생
3-2.정의 방식차이
오버 로딩은 메서드 이름은 동일하지만 매개변수 목록이 다름.
오버 라이딩은 메서드 이름과 매개변수 목록이 모두 동일함
3-3호출방식 차이
오버로딩은 동일한 객체를 사용하여 다른 매개변수로 호출
오버라이딩은 다른 객체를 사용하여 동일한 매개변수로 호출
3-4다형성 시점 차이
오버로딩은 컴파일 시점에서 다형성이 발생
오버라이딩은 런타임 시점에서 다형성이 발생
4..Net과 Mono의 관계
.Net은 언어 플랫폼, Mono는 .Net 컴파일러, CLR 및 기본 라이브러리를 통합 및 구현하는 .Net용 IDE를 제공해서, Windows는 물론 리눅스등에서도 .Net을 실행할 수 있게 해줌.
5. C#에서 모든 참조 형식의 기본 클래스는 무엇인가?
참조 형식의 기본 클래스는 System.Object
값 형식의 기본 클래스는 System.ValueType
또한 값 형식은 Syste.Object에서 암시적으로 상속됨
6. ArrayList와 List의 차이점
ArrayList
-제네릭을 사용하지 않아 데이터 타입 정보가 손실됨
-Boxing과 UnBoxing이 필요하며 이는 시간이 소요됨
-타입 안전성이 없음, ArrayList는 모든 삽입된 데이터를 Object로 처리함
-IList는 인터페이스이며, ArrayList는 이 인터페이스를 구현한 클래스로 인스턴스화됨
List
-제네릭을 사용하여 데이터 타입 정보가 손실되지 않음
-Boxing과 UnBoxing이 필요하지 않음
-List 클래스는 ArrayList 클래스의 제네릭 버전임. 대부분 사용법 자체는 ArrayList와 유사하지만, List 클래스도 IList 인터페이스를 상속받음. 가장 중요한 차이점은 List 컬렉션을 선언할 때 내부 데이터의 객체 타입을 동시에 선언해야함
댓글좀 줘봐 애들아
섹스
개추추 - dc App
ㄳㄳ
pandas arraylist랑 비슷하게 굴러가네 다 비슷비슷한건가
애초에 객체지향이라? pandas면 파이썬인걸로 아는데
공부많이했노 이기
ㄳ
그럼 원시자료형은 없는건가요
ㄴㄴ 있음
그냥 그게 값형식에 분류되는걸로 앎 나는
그래서 뭘로짤래 wpf 해라
C# 기초가 아니라 언어 기초 아님?