728x90
728x90

C# 52

C#] System.Net 네임스페이스

### System.Net 네임스페이스 현재 네트워크에서 사용되는 여러 프로토콜에 대한 단순한 인터페이스 제공된다.DNS, IPAddress, IPHostEntry 클래스 등이 존재하며, 상당히 많은 클래스가 존재한다. ## DNS 클래스 단순 도메인 이름 확인 기능을 제공하는 클래스.특정 호스트의 정보를 인터넷 DNS에서 검색하는 정적 클래스이다.DNS 쿼리에서 검색한 호스트 정보는 IPHostEntry 클래스의 인스턴스에 반환된다.지정된 호스트의 DNS DB에 여러 항목이 있으면 IPHostEntry에 여러 IP 주소와 별칭을 포함한다. # GetHostName : 로컬 컴퓨터의 호스트 이름을 가져옴# GetHostAddress : 지정된 호스트의 IP 주소 반환함 ## IPAddress 클래스 컴퓨..

C#] MySQL 사용하기

C#] MySQL 사용하기 필자가 읽고 있는 책에서 그리고 공부하고 있는 사이트에서C#을 이용해서 데이터베이스를 다룰 수 있게끔 해놨는데,그 중에 필자의 눈에 들어왔던 것은 MySQL을 활용하는 것이었다. 이미 필자는 지난 학기 데이터베이스 프로그래밍을 통해서 인터넷 쇼핑몰을 만들어본 경험이 있어서MySQL 쿼리문 활용은 어렵지 않게 할 수 있지만, 이를 C#으로 다룰 수 있다는 것에곧바로 필자가 평소 즐기는 게임인 메이플스토리의 '코어 젬스톤'이라는 것을 획득했을 때마다작성하여 기록하는 일종의 가계부 비슷한 프로그램을 만들었다.(이를 속칭 '젬계부'라 한다...) (디자인이 개판이어도 이해 바란다.. 그냥 실습이 목적이었고, 기껏해야 게임 아이템 획득 수량 기록하는 프로그램이니..) 일단 MySQL 데..

C#] 제네릭(Generic) - 2

### 제네릭 ## 파생 제네릭 형식도 제네릭이 아닌 클래스처럼 파생 가능.제네릭 클래스를 기반으로 삼아 파생 클래스 정의 시, 기반 클래스의 형식 매개변수를 열린 채로 남겨두는 것이 가능함. 12class Stack {}class SpecialStack : Stack {}cs 구체적 형식을 지정해 제네릭 형식 매개변수를 닫을 수도 있으며, 파생 형식에서 새로운 형식 매개변수를 도입할 수도 있음. 1234class IntStack : Stack {} class List {}class KeyedList : List {}cs 엄밀히 말해 한 파생 형식의 모든 형식 매개변수는 새로 도입된 것임. ## 자신을 참조하는 제네릭 형식 파생 형식이 기반 형식의 형식 매개변수를 닫을 때, 파생 형식 자신을 형식 인수로..

C#] Delegate(델리게이트, 대리자) - 1

### Delegate Delegate type은 그 형식의 인스턴스를 호출할 수 있는 종류의 메서드를 정의함.좀 더 구체적으로 이 형식은 그런 메서드의 반환 형식과 매개변수 형식들을 정의함.delegate는 전통적인 프로그래밍 언어에서의 callback과 유사한 측면이 있다. 일반적으로 이 callback은 C의 함수 포인터 같은 지연 호출 수단을 일컫는 용어로 쓰임. 반환 형식이 int, int 형식의 매개변수 하나를 받는 모든 메서드에 사용 가능한 delegate type 정의한 예. delegate int Transformer (int x); class Test { static void Main() { Transformer t = Square; int result = t(3); Console.Wr..

C#] 구조체(Structure)

### 구조체(Structure) 참조 형식이 클래스와는 달리 구조체는 값 형식임.구조체는 상속을 지원하지 않음.(System.ValueType을 암묵적으로 상속한다는 점은 제외)구조체는 클래스가 지원하는 요소 중,매개 변수가 없는 생성자, 필드 초기화, 종료자, 가상 멤버와 보호된 멤버를 제외한 모든 요소를 지원함. 구조체는 값 형식 의미론이 바람직한 경우에 적합하며, 일례로 커스텀 수치 형식이 있음.수치 형식에서는 배정 시 참조가 아니라 값을 복사하는 것이 더 자연스럽기 때문임.구조체는 값 형식이기 때문에, 인스턴스화 시 힙에 객체를 할당할 필요가 없어 한 형식의 인스턴스를 많이 생성하는 경우 구조체가 더 효율적일 수 있음. ## 구조체 생성 의미론 구조체에는 매개 변수 없는 생성자가 암묵적으로 존재..

C#] 제네릭(Generic) - 1

### 제네릭(Generic) 여러 형식들에서 재사용할 수 있는 코드를 작성하기 위한 메커니즘 중 하나로, 자리표(placehodler)에 해다하는 형식들을 담은 템플릿(template)을 통해 재사용성을 표현함.상속에 비해 형식 안전성이 증가하고 casting, boxing이 줄어듦. ## 형식 형식 매개변수(type parameter)들을 선언하여 사용하며, 이는 실제 형식들이 대신할 자리를 표시하는 자리표에 해당함.형식 매개변수는 관례적으로 T를 이용하며, 형식 매개변수가 여러 개인 경우, T로 시작하면서 명확히 구분할 수 있는 이름을 붙여 매개변수를 사용함.실제 형식은 형식 인수(type argument)라고 부름. ex) Stack 123456789101112public class Stack{ ..

C#] 열거형(Enum Type)

### 열거형(Enum Type) 일련의 수치 상수들에 이름을 붙일 수 있는 특별한 형식열거형의 각 멤버에는 바탕 정수값이 존재하며, 이는 기본적으로 int형이며, 선언 순서대로 0, 1, 2가 배정됨.int 외의 형식을 배정하는 것도 가능하며, 명시적으로 바탕 정수 값 외의 값을 배정하는 것도 가능함. 더 나아가, 컴파일러는 열거형의 일부 멤버들에만 명시적으로 값을 배정하는 것도 허용함.이 경우 배정되지 않은 열거형 멤버들에게는 가장 최근 명시적으로 배정된 값을 차례로 증가한 값들이 배정됨. ## 변환 enum 인스턴스를 그 바탕 정수값으로, 그 반대로 변환 가능함.두 경우 모두 명시적 캐스팅(casting)이 필요. public enum BorderSide : byte { Left = 1, Right..

C#] 부분 형식, 부분 메서드

부분 형식(partial type)과 부분 메서드(partial method) - 부분 형식 하나의 형식을 여러 곳에서 나누어 정의하는 것하나의 형식이 여러 소스 파일에서 정의되는 경우도 흔함.부분 클래스의 흔한 용도 하나는 다른 어떤 출처에서 자동으로 생성한 클래스를 사람이 직접 추가해 보강하는 것한 형식의 모든 부분 선언에는 반드시 partial 키워드가 있어야 함. AGen.cs - 자동 생성 partial class A { ... } A.cs - 사람이 직접 생성 partial class a {...} 매개변수가 동일한 생성자가 여러 개의 부분 선언에 포함되어 있는 경우처럼 멤버들이 충돌해선 안 됨.부분 형식은 전적으로 컴파일러가 처리해,모든 부분 선언이 갖추어져야 하며, 반드시 어셈블리 안에 있..

C#] nameof

nameof 연산자 C# 6.0에 추가된 개념임의의 기호(형식, 멤버, 변수 등)의 이름에 해당하는 문자열을 돌려줌.그냥 해당 문자열을 직접 지정하는 것에 비해, 정적 형식 점검이 일어난다는 장점이 있음.Visual Studio 같은 툴들은 기호 참조를 이해할 수 있어,해당 기호의 이름을 바꾸면 그에 대한 모든 참조의 이름도 바뀜. 필드나 속성 같은 형식 멤버의 이름을 얻으려면 그것이 속한 형식의 이름도 지정해야 함.이는 정적 멤버, 인스턴스 멤버 모두 마찬가지임. string name = nameof (StringBuilder.Length); name에는 "Length"가 배정되며, "StringBuilder.Length"를 원하는 경우 아래와 같이 사용한다. nameof(StringBuilder) +..

C#] 상수(Constant)

상수 필드(constant field) 값을 결코 바꿀 수 없는 정적 필드컴파일 시점에서 정적으로 평가되며, 컴파일러는 상수가 쓰이는 곳마다 그 값을 직접 삽입하며,이는 C++의 매크로와 상당히 유사한 면을 띔.타입으로는 내장 수치 타입들과, bool, char, string, 열거형을 사용 가능상수 선언 시, const 키워드를 반드시 써줘야 하며, 초기치도 반드시 지정해야 함. 메서드에 국한된 지역 상수 사용을 가능하게 함.지역 상수가 아닌 상수의 경우 다음과 같은 수정자들을 적용할 수 있음.public internal private protected, new 사용할 수 있는 형식 면에서나 필드 초기화 방식에서나, static readonly 필드보다 훨씬 제한적임.컴파일 시점에서 평가된다는 점 역시..

728x90