c의 구조체 같은 개념
c#에도 구조체는 있지만 구조체는 값타입을 만들어내고 클래스는 참조타입을 만들어낸다.
쉽게 말해서 구조체가 일반 변수같은 느낌이면 클래스는 포인터같은 느낌?
사실 차이점은 거의 없고 다 비슷한데 상속이 안된다는 점만 좀 다른 것 같다.
또 클래스는 포인터 개념이기 때문에 함수 인자로 줘서 처리 할 때에도 편리하다는 장점이 있다.
C로 코딩할 때 다음과 같은 예제를 본 적이 있을 것이다.
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
void main() {
int a = 5;
int b = 10;
swap(a, b);
return 0;
}
위와 같은 예제에서 main에 선언 되어있는 a, b 두 변수는 값타입이기 때문에 인자로 전달 될 때 복사되어 전달 된다.
따라서 main에 있는 두 변수는 swap 함수를 몇번 실행하든 상관없이 그대로이다.
클래스는 주로 객체를 표현하고 그 객체들을 인자로 전달해서 처리할 때가 많기 때문에 이런 면에서 구조체보다 편리하다.
-=-=-=---=--=-=-=-=--=-=-=-=-=-=---=--=-=-=-=--=-=-=-=-=-=---=--=-=-=-=--=-=-=-=-=-=---=--=-=-=-=--=-=-=
클래스에는 메서드, 속성, 필드, 이벤트 등의 멤버가 포함되며
클래스로 부터 객체를 생성하서 사용하게 된다.
클래스를 정의할 때 중요한 멤버는 공용 메서드와 속성인데, 이 멤버들은 외부 객체와 상호작용을 위해서 사용된다.
메서드 : 클래스에서 실제로 동작하는 코드 블럭
속성 : 클래스의 내부 데이터를 외부에서 사용할 수 있게 하거나, 외부에서 클래스 내부의 데이터를 간단하게 설정할 때 사용한다.
필드 : 데이터 타입과 변수에서 설명했듯 전역변수라고 생각하면 된다.
메서드안의 지역변수와는 다르게 값이 계속 유지되므로 객체의 상태를 유지하는데 사용된다.
이벤트 : 객체 내부의 특정 항태 혹은 이벤트를 외부로 전달하는데 이용된다. 특정 이벤트가 발생하면 그 이벤트를 구독한 모든 외부 객체에게
정보를 통보하는 식으로 동작한다.
public class SG
{
// 필드
private DateTime time;
private bool paradox;
//이벤트
public event EventHandler RewindingTime;
//생성자
public SG()
{
paradox = false;
time = DateTime.Now;
Console.Write({time});
}
//메서드
void setTime(DateTime x) {
this.time = x;
}
//속성
public DateTime time
{
get { return this.time };
set {
this.time = value;
Console.WriteLine("Time has been changed!!\n");
}
}
}
'공부 > C#' 카테고리의 다른 글
static 개념 (0) | 2018.12.17 |
---|---|
delegate 개념 (0) | 2018.12.17 |
데이터타입과 변수 (0) | 2018.12.15 |