닷넷 프레임워크 125

[삽잡이::C#]문자열

string 즉, 문자열은 C#에서 변경되지 않습니다.그리고 참조 형식입니다.하지만, 동작은 값 형식과 똑같습니다.왜냐하면, 독립성을 보장하기 때문입니다. 많은 객체들이 한 참조를 가진다고 해도,변경이 가능하지 않다면 독립적인 객체입니다. 문자열이 절대로 바뀌지 않는다면,일부를 공유하는 독립적인 객체가 됩니다.따라서, 외부에서 공유를 하더라도 바뀌지 않습니다. 정리하자면,string은 참조형식이기는 하나, 값 형식과 똑같이 동작합니다.문자열을 값처럼 넘겨라? 틀린말이 아닙니다.

#037_닷넷(.NET)_.Net Framework 기본 -Object 메서드 (static)

안녕하세요 삽잡이입니다. 이번시간은 지난 시간에 이어 object class 내에 있는 메서드들에 대해 알아보려고합니다. 다음은 object 클래스에서 제공해주는 정적(static) 메서드들입니다. object 클래스에서 제공해주는 정적메서드에는 Equals() 메서드와 ReferenceEquals() 메서드가 있습니다.저~번 시간에 가상 메서드로 Equals() 메서드에 대해 알아본 기억이 있지요? static 메서드는 객체의 것이 아닌 'object class'의 것입니다. 아무튼.... 결론은 가져와서 '비교'해주는 메서드들입니다.그리고 이 메서드들은 모두 인자를 두 개씩 받도록 구현되있군요...사실 당연한 말입니다... static 메서드는 내 것도, 너 것도 아닌 class의 것이니깐요.... ..

#036_닷넷(.NET)_.Net Framework 기본 -Object 메서드 (instance)

안녕하세요 삽잡이입니다. 이번시간은 지난 시간에 이어 object class 내에 있는 메서드들에 대해 알아보려고합니다. 다음은 object 클래스에서 제공해주는 멤버(Instance) 메서드들입니다. Object 클래스에서 제공해주는 인스턴스 멤버에는 GetType()메서드와 MemberwiseClone() 메서드가 있습니다. 우선, GetType() 메서드는 자기 객체의 타입을 정말 잘 알고 있는 '타입 객체'를 반환합니다. MemberwiseClone() 메서드는 '복사' 동작을 할 때에 중요해집니다. 참조를 복사하는 경우를 봅시다. 객체가 아닌 참조가 복사되는 경우입니다.만약, 복사된 객체를 가리키고 싶다면 어떻게 해야할까요?이 때에는 MemberwiseClone() 메서드를 사용하면 됩니다.단,..

#035_닷넷(.NET)_.Net Framework 기본 -Object 메서드 (virtual)

안녕하세요 삽잡이입니다. 모든 타입의 부모는 Object Class이지요...그런데 이 Object에는 메서드들을 제공해줍니다. 다음은 object 클래스에서 제공해주는 메서드들입니다. 이와 같은 메서드들은 크게 '가상 멤버 메서드', '인스턴스 멤버 메서드', '정적 멤버 메서드'로이루어져 있습니다. '가상 메서드' 및 '인스턴스 메서드'로 이루어진 것들은 추후 자식 클래스에서 재정의 할 수 있게 되고,'정적 메서드'로 이루어진 것들은 클래스 수준에서 호출할 수 있게 됩니다. 하나하나 살펴보도록 하겠습니다.object 클래스에서 'Equals', 'GetHashCode' 메서드들은 항상 같이 묶여 다닙니다.즉, 오버라이드가 되어야 한다면 둘 다, 둘 중 하나 할 것이면 둘 다 하지 않는게 바람직합니다...

#034_닷넷(.NET)_.Net Framework 기본 - 상속 구조를 끊는 new 키워드

안녕하세요 삽잡이입니다. 이번시간에는 우리가 알던 기존의 new 키워드가 아닌다른 new 키워드에 대해서 알아보도록 하겠습니다... 부모 클래스의 메서드를 의도적으로 숨기겠다는 표시를 하는 것이지요... 이와 같은 구조의 코드가 있다고 해보겠습니다... 모두 2D 형식으로 그려지는 Draw() 메서드가 있는데,여기서 기술이 진보된 Rect 3D 클래스는 3D로 Draw()메서드를 사용하고 싶다고 합니다.이럴때에는 어떻게 해야할까요? Rect3D 클래스는 부모에게 모든 기능을 물려받고 기능 하나만을 더 추가 하고 싶은 것입니다. Rect3D를 따로 만들면 될까요?그러면 하나의 그룹처럼 다룰 수도 없고, 기존 기능도 물려 쓸 수 없습니다...3D로 Draw()하는 메서드만을 추가하면 되는데... 즉, 2D를..

#033_닷넷(.NET)_.Net Framework 기본 -형식 변환 검사 키워드(is & as)

안녕하세요 삽잡이입니다. 이번 시간에는 형변환 검사 키워드에 대해서 알아보려고 합니다. C#에서는 형식 변환과 관련된 키워드로써 'is', 'as' 키워드를 제공해줍니다. 만약, 이와 같은 코드가 있다고 해봅시다.그런데 'as' 키워드를 사용해서 이처럼 바꿀 수 있습니다. as 키워드를 사용해서 형식 변환을 해줄 수 있다 이겁니다.참고로 참조 형식은 안됩니다.이 as 키워드는 참조를 반환하거나, NULL을 반환하거나 합니다. 이와 같은 구조를 가진 클래스들이 있다고 해보겠습니다. oa와 ab가 같다고 해보겠습니다.oa는 ob를 가리킬 수 있지 않습니까? 즉, 자동 캐스팅이 가능하다는 소리입니다. 그런데 'B ob2 = oa;'이와 같이 자식 타입으로 캐스팅이 가능할까요?형식이 되지 않지요... 따라서 다..

#032_닷넷(.NET)_.Net Framework 기본 - Boxing & Unboxing

안녕하세요 삽잡이입니다. 이번 시간에는 boxing, unboxing에 대해서 알아보겠습니다. int, double 과 같은 내장 타입 역시 object를 부모로 가지고 있는 자식들입니다.따라서 이와 같은 구조는 성립될 수 있습니다. 모든 형식은 object 이기 때문에 가능합니다.물론, interface를 제외하고 말입니다.하지만, 여기에는 아직 설명하지 않은 부분이 있습니다...잠시후에 설명하도록 하지요... 그런데, 이처럼 값 복사가 아닌 참조 복사일 때는요?똑같습니다. 형식은 성질을 뜻하는 것일 뿐입니다.따라서 object로 참조를 하면 object만큼의 기능을 수행할 수 있는 것이고,Rect를 참조하면 Rect만큼의 기능을 참조할 수 있는 것입니다. 반대로 object에서 변환한 값을 Rect로..

#030_닷넷(.NET)_.Net Framework 기본 - 생성자 주의 사항

안녕하세요 삽잡이입니다. 이번 시간에는 생성자를 구현할 때에 주의해야할 점에 대해서 알아보고자합니다. 생성자는 클래스를 인스턴스화 할 때 한번 호출되는 메서드입니다.그리고 클래스는 필요한 곳이면 어디든지 가져다 쓰기 위해서 만든 정의 묶음이지요...즉, 객체지향 측면에서 바라볼 때이미 만들어놓은 클래스를 다른 곳에서 가져다 쓸 일이 비일비재하다는 것입니다. 따라서 가져다 쓸 사용자의 입장을 바라볼 때누구나 범용적으로 사용할 수 있도록 명확한 클래스를 정의해야합니다. 또한, 생성자에서는 분명 명확한 코드만을 포함시켜야합니다.생성자가 호출된다는 것은 물리적으로 메모리에 객체를 생성하고 생성자를 호출해서 그 메모리의 값들을 초기화하는 것입니다. 생성자를 이야기할 때에는 생성자를 호출해야 객체가 만들어지는 것이..

#029_닷넷(.NET)_.Net Framework 기본 - class & struct 응용

안녕하세요 삽잡이입니다. 이번 시간에는 Class와 Struct를 응용해서 더욱 깊이(?) 알아보려합니다. List는 그저 클래스 형식입니다.t는 타입 이름을 말하는 것이구요...t[]와 다를 바가 없습니다. 아무튼... 예를 들어 이와 같은 코드라면 int형 n에 들어있는 '100'이라는 값을 100번 저장하는 꼴입니다. 그런데, 만약 값, 참조를 List에 저장하게 되면 어떨까요??Point형식의 x, y 필드를 담는 구조체, 변수에 대해서 생각해보겠습니다. 구조체라면, 값을 저장하게됩니다.따라서 pt 값을 100번 저장하게 된다면, 이처럼 stack 영역에 100개의 객체가 생성되게 됩니다... 하지만, 클래스는 참조 값을 통해 객체를 가리키게 됩니다.따라서 100개의 pt 요소들이 new Poin..

#028_닷넷(.NET)_.Net Framework 기본 - 클래스와 구조체의 용도

안녕하세요 삽잡이입니다. 이번 시간에는 클래스와 구조체에 대해서 알아보겠습니다. 클래스는 자동 속성이 되지만 구조체는 자동 속성을 만들 수 없습니다... 뭐... 원래 이렇게 약속을 해뒀기 때문입니다... struct의 의미는 '값 형식'이라는 의미를 가지고 있습니다.class는 '참조 형식'이라는 의미를 가지고 있지요... 값 이라 하면 '어떤 데이터를 표현하기 위해 만들어 놓은 형식'을 말하는 것입니다.어떤 데이터를 표현하기 위해서... 즉, 값의 표현을 목적으로 하는 것이 구조체라는 것입니다.데이터 중심적이지요... 따라서 struct는 데이터 표현을 위해 사용합니다. 그런데 class는 참조 형식이지요.... 서비스 즉, 클라이언트가 서버에게 어떤 기능을 요청했을 때서비스를 수행, 제공하기 위한 ..