반응형

분류 전체보기 2941

14.정적 클래스 및 정적 멤버

정적 클래스 및 정적 멤버 다루는 내용 - 정적 클래스 - 정적 멤버 - 비 정적 클래스의 private 생성자 C#과 Java의 경우에는 전역 스코프가 없다라는 것 때문에 C와 C++에서 전역 스코프에 의존했던 이들에게는 프로그래밍 하기 불편하다는 투정을 받을 수도 있다. 물론, 동적인 형태로 프로그래밍을 해 온 이라면 크게 문제가 되지 않겠지만 말이다. 그렇지만, C#과 Java에서도 static 클래스를 통해 전역 스코프와 동일한 효과를 가져올 수 있게 해 주고 있다. class명 앞에 static 키워드가 붙으면 인스턴스는 생성할 수 없는 정적 클래스로 정의가 된다. 이들은 static 멤버들로만 구성되어 있고 파생을 할 수 없는 봉인된(sealed) 클래스가 된다. 그리고, public한 정적 ..

13.메소드

메소드(Method) 다루는 내용 - ref - out - params 메소드는 특정 기능을 수행하는 코드의 집합이다. 메소드는 액세스 한정자와 반환값, 메소드 명, 매개변수로 구성된 시그니쳐 부분과 수행해야 할 코드 블록으로 구성된다. class Example { public int Add(int a,int b) { return a+b; } } 액세스 한정자에 대해서는 별도의 항목에서 다루기로 하고 매개변수전달에 대해서 먼저 살펴보자. C#에서는 참조로 매개변수를 전달하기 위해 ref와 out키워드를 제공하고 있다. out은 입력된 값은 해당 메소드를 수행하는데 아무런 의미가 없고 호출하는 곳에서 결과값을 원할 때 사용이 된다. 즉, return으로 반환받는 개수가 한 개로 한정된 것을 out을 통해 ..

12. 속성(Property)

속성(Property) 다루는 내용 - 속성 - 액세스 수준이 서로 다른 속성 - 접근자 내부 구현을 생략하는 간단한 속성 속성은 필드 값을 읽고 쓰거나 계산하기 위한 메커니즘을 제공되는 멤버이다. 이를 통해 데이터의 안정성과 유연성을 높일 수 있으며 사용자로 하여금 멤버처럼 쉽게 액세스를 가능하게 해 준다. Look & Feel & Think AboutProperty 클래스의 예를 보면 멤버 필드로 iq를 갖고 있고 상수 max_iq와 min_iq가 정의되어 있다. 그리고 public 메소드로 Study가 있는데 여기에서 속성을 이용하여 값을 읽기 및 변경을 하고 있다. 이와 같은 구조를 통해 특정 멤버 필드에 직접 접근하여 값을 변경하지 않음으로 인해 값의 신뢰성을 높일 수가 있다. Study에서 이..

11.Class

Class 다루는 내용 - 클래스와 구조체 - 캡슐화 할 수 있는 멤버 구조체와 클래스는 하나의 논리 단위에 속하는 일련의 데이터와 동작을 캡슐화 하는 형식이다. 데이터는 멤버 속성으로 표현이 되고 동작은 멤버 메소드 및 이벤트 등으로 표현을 할 수가 있다. 구조체의 경우는 이전 항목에서 설명한 바와 같이 스택에 인라인으로 할당되며 값 형식으로 선언된 범위를 지나게 되면 스택과 함께 소멸이 된다. 이에 MSDN에서는 생성 후 수정하지 않을 데이터를 주로 표현하는 작은 데이터 구조에 사용할 것을 권하고 있다. 이에 비해 클래스는 참조 형식으로 관리화 힙에 할당이 되어 참조되는 범위가 벗어날 때까지 메모리에 유지되는 것을 보장받으며 모든 참조가 범위를 벗어나면 CLR에 의해 가비지 수집 대상으로 표시된다. ..

10.Casting

Casting 다루는 내용 - 사용자 정의 변환 (implicit operator, explicit operator) - type casting(형식 변환)을 위해 제공되는 Help Class들 C#도 C나 C++처럼 컴파일 타임에 정적으로 형식이 지정이 된다. 즉, 변수 선언시 형식이 지정되며 다른 형식의 값을 저장하기 위해서는 type casting(형식변환)이 필요하다. 형식 변환에는 암시적 변환, 명시적 변환, 사용자 정의 변환, Help Class를 통한 변환으로 구분할 수가 있다. 먼저, 암시적 변환이 지원되는 경우는 변환과정을 통해 데이터의 손실이 되지 않는 형식간 변환에 제공이 되고 있다. 예를 들어 작은 정수 형식에서 큰 정수형으로의 변환 및 파생 클래스에서 기본 클래스로의 변환등이 있을..

9.String

String 다루는 내용 - String의 멤버 - StringBuilder String은 Char개체의 읽기 전용 컬렉션으로 저장이 되며 각 컬렉션은 UTF-16으로 인코딩된 유니코드 문자 하나이다. String클래스는 C및 C++과 달리 안전한 작성 및 조작, 비교를 할 수 있다는 특징이 있다. 또한 string이라는 별칭으로도 사용이 가능하며 개별 유니코드 포인터에 액세스를 하기 위해 StringInfo개체를 사용할 수도 있다. 고려해야 할 점은 String 개체는 읽기 전용 컬렉션이기 때문에 수정이 불가능하며 수정하는 것처럼 보이는 메소드를 포함을 하고 있어서 해당 메소드 수행 후 수정된 String개체를 반환하고 있다. 즉, 반환되는 것은 새로운 String개체이고 기존 개체는 GC에 의해 수집..

8. Object

Object 다루는 내용 - Object - Object에서 파생된 클래스에서 재정의할 수 있는 메소드 C#의 object형식은 .NET Framework의 Object형식에 대한 별칭입니다. Object는 모든 형식 계층 구조에서 루트여서 모든 형식은 Object로부터 암시적으로 파생이 된다. Object는 다음과 같은 메소드들을 제공을 하고 있으며 모든 형식은 암식적으로 파생된 형식들이므로 이들을 사용할 수 있다. 또한 파생된 클래스에서는 virtual 메소드를 override할 수 있다. [SerializableAttribute] //클래스가 serialize될 수 있음을 표시 [ComVisibleAttribute(true)] //COM에 대한 어셈블리 내의 관리되는 형식의 액세스 가능성을 제어 [..

7. 배열

배열 다루는 내용 - 1차원 배열 - 다차원 배열 - Jagged 배열 - foreach 및 Length멤버 이번 항목은 Look & Feel로만 구성되어 있으니 잘 보시고 스텁 형태로 작성하여 확인해 보시길 바란다. 1차원 배열 27번 라인처럼 초기화에서 되는 구문도 35번 라인처럼 대입 연산구문에서는 허용치 않는 표현은 주의하자. C#에서는 할당된 배열 공간을 벗어날 경우 예외가 발생함으로써 개발 시에 잘못된 부분을 수정할 수 있게 해준다. 다차원 배열 48번 라인처럼 초기화 구문에 사용되는 표현이 55번 라인과 같이 대입 연산구문에서는 허용하지 않는 것들은 주의하자. Jagged 배열 C#에서는 다음과 같은 Jagged(지그재그) 배열을 제공하고 있다. 배열 형식은 Array 추상 형식에서 파생된 ..

6. valuetype 기본 형식

valuetype 기본 형식 형식명 범위 변환 가능 형식 bool true,false 없음 bool? true,false,null 없음 char U+0000 ~ U+ffff(유니코드) ushort, int, uint, long, ulong, float, double 또는 decimal sbyte -128 ~ 127 short, int, long, float, double, decimal byte 0 ~ 255 short, ushort, int, uint, long, ulong, float, double, decimal char U+0000 ~ U+ffff int, long, float, double, decimal short -32,768 ~ 32,767 int, long, float, double, d..

5. .NET Framework

.NET Framework 다루는 내용 - .NET Framework 개요 - CLR(Common Laguage Runtime, 공용 언어 런타임) - CTS(Common Type System, 공용 언어 시스템) _ CLS(Common Language Specification, 공용 언어 사양) C# 프로그램은 .NET Framework기반에서 실행이 됩니다. C#컴파일러는 .NET 어셈블리(.NET 가상머신에서 동작 가능한 바이너리)를 생성하고 CLR이라는 가상 실행 시스템이 .NET Framework의 일부분인 통합된 클래스 라이브러리와 결합하여 네이티브 기계어(실제 시스템에 맞는 기계어)를 생성을 해 줍니다. 그리고, 통합된 클래스 라이브러리는 다양한 언어로 제작된 프로그램에서 사용할 수 있는데 ..

반응형