Loading...

Value 타입과 Reference 타입에 대한 설명

Value 타입과 Reference 타입에 대해서 간단히 살펴보죠. 보통 data type 이라면 int, char, double 등이 생각이 나죠. 닷넷에서는 System.Object 라는 클래스에서 파생이 되었답니다. 저장시에 무엇이 저장되며, 메모리는 어느 부분을 사용하는지, 대표적인 데이터형은 뭔지를 알아보죠. ===================================================..

닷넷이란 무엇일까요?

닷넷이라고 말하기도 하고, 닷넷 프레임웍(.net framework)이라고도 말씀들을 하시죠. MS 회사측에서 개발환경과 웹으로 집중되는 인터넷 시대에 발전하기 위해서 개발한 개발환경 프로그램이라고 한답니다. 닷넷의 특별한 점은 짧게 말씀을 드리면, 플랫폼에 독립적이고 개발하기가 쉽다는 점이죠. 닷넷에는 CLS 즉, COMMON LANGUAGE SPECIFICATION를 따르는 언어라면 어디에서도 실행이 되며, CLS를 따른 언어는 CLR ..

C# - CookieHelper 만들기

using System; using System.Collections.Specialized; using System.Web; public static class CookieHelper { public static void ClearCartCookie(Guid storeGuid) { if (storeGuid != Guid.Empty) {..

DateTime 형 유용한 유틸 라이브러리

namespace DateTimeLibrary {     using System;     using System.Collections;     public class DateTimeLibrary     {         public static string FirstDayOfCurrentMonth()         {             DateTime today = DateTime.Today;             DateTime time2 =..

객체 정보를 얻기위해 Reflection 을 사용해 보자

우리는 가끔 런타임시에 어떤 객체에 대해 필드,속성,이벤트를 알고자 할 때가 간혹 있을 것입니다. 이를 한번 가져오는 코딩을 해 볼까 합니다. 먼저 MyObject 클래스에 필드, 속성, 이벤트를 기재했습니다. public class MyObject{   //public 필드   public string myStringField;   public int myIntField;   public MyObject myObjectFiel..

C# ENUM 키워드의 Description 를 이용하여 값을 가져오기

이번에는 enumeration 을 이야기 해볼까 합니다. ENUM 키워드에 대해서 MSDN 은 어떻게 설명을 하고 있을까요? enum 키워드를 사용하여 열거자 목록이라고 하는 명명된 상수 집합으로 구성된 독특한 형식인 열거형을 선언합니다. 모든 열거형에는 char 형식을 제외한 임의의 정수 계열 형식이 될 수 있는 내부 형식이 있습니다. 열거형 요소의 기본적인 내부 형식은 int입니다. 기본적으..

2009.03.10 00:11

Generic Array 을 유용하게 사용해 보자

일반적인 .NET FRAMEWORK 2.0 는 배열에 대해 약간의 GENERIC 함수들을 제공해 줍니다.  그러나 이 함수 이외에 코드에서 배열의 요소들을 합치거나 제거하는 기술을 구현할 때가 종종 있죠.  따라서 이러한 기술을 구현하기 위해서 우선적으로 GENERIC 클래스에 대한 기본지식을 가지고 있어야 합니다. 즉 Lists, Arrays 이외 말이죠. 이러한 Array 객체들은 다소의 유용한 GENERIC 함수들..

성능 프로파일러를 사용하여 Generic(제네릭) 리스트와 ArrayList 비교

성능 프로파일러를 사용하여 제네릭 리스트와 ArrayList 비교 Bill Gibson, 프로그램 관리자 Microsoft Corporation 적용 대상 :  Microsoft Visual Studio 2005 Team System     프로파일러를 사용하여, 제네릭 리스트 구현과 ArrayList 구현의 성능 검토   Visual Studio Team System..

Interface(인터페이스)의 속성(Property)을 클래스에서 다중 상속하여 사용하기

인터페이스에는 필드들을 포함할 수 없죠. 그래서 아래와 같은 코드는 컴파일시 오류가 발생되죠. public interface IAnimal {    public string SpeciesName; } 하지만, 인터페이스에서는 프로퍼티(속성)를 포함할 수 있답니다. 컴파일시 문제가 없겠죠.     public interface IAnimal    {        string SpeciesNam..

ENUM 키워드의 Description 를 이용하여 값을 가져오기

이번에는 enumeration 을 이야기 해볼까 합니다. ENUM 키워드에 대해서 MSDN 은 어떻게 설명을 하고 있을까요? enum 키워드를 사용하여 열거자 목록이라고 하는 명명된 상수 집합으로 구성된 독특한 형식인 열거형을 선언합니다. 모든 열거형에는 char 형식을 제외한 임의의 정수 계열 형식이 될 수 있는 내부 형식이 있습니다. 열거형 요소의 기본적인 내부 형식은 int입니다. 기본적으로 첫 번째 열거자 값은 0이며 그 이후의 ..

2009.02.12 23:52

C# 의 상속(Inheritance) 구현 Overriding 설명(4)

이번에는 오버라이딩에 대해서 설명하고자 합니다. 오버라이딩 즉 overriding 은 메소드를 재정의한다고 생각하시면 되는데요.  이는 new 키워드와 다른 결과를 나타내고 있는데요. base class 에는 virtual 이라는 키워드를 사용하고, derived class 에는 override 라는 키워드를 사용한답니다.  virtual 은 말 그대로 "가상의"라는 뜻으로 가상의 메소드를 사용하겠다는 의미를 담..

2009.02.12 23:42

C# 의 상속(Inheritance) 구현 base 키워드설명(3)

이전에는 new 키워드를 설명했죠. new 키워드는 base class 와 derived class 에 똑같은 메소드명을 구현하여 Console.Write 와 같은 출력문에 대한 코딩을 했을 경우, Main() 메소드에서 호출시 어느 클래스에서 왔는지 구분하기 위해 derived class 에 있는 메소드에 new 키워드를 기재합니다. 그럼 base 키워드는 무엇에 쓰일까요? 만약에 base class 에 출력문에 대한 메소드..

2009.02.12 23:13

C# 의 상속(Inheritance) 구현 설명(2)

이번에는 메소드를 이용해서 상속을 어떻게 구현하는지 살펴보죠. 여기서 메소드를 derived class 에서 new 키워드를 이용하여 base class 와 derived class 에 둘다 동일한 메소드를 구분하기 위해서 derived class 의 메소드에 new 키워드를 삽입합니다. 이는 메소드를 호출했을 경우, 어느 클래스의 메소드를 호출했는지 알 수 없기에 구분 차원에서 한것입니다.  따라서 이를 메소드 재..

2009.02.12 23:07

C# 의 상속(Inheritance) 구현 설명(1)

base 클래스(상위클래스)와 derived 클래스(하위클래스)를 선언해 보겠습니다. //base class 기술 protected class Test1 {     public int a;     public int b; } //derived class 기술 class Test2 : Test1 {      public int c; } c#에서는 단일상속만 가능하기 때문에 위처럼 Test1 의 클래스 하나만 상..

C# 의 상속(Inheritance)에 대한 이론설명

우리는 c# 의 객체지향언어를 살펴보고 있답니다. 사실 객체지향언어가 가지고 있는 주요 핵심은 상속이라고 말씀드리고 싶네요. 상속은 말그대로 할아버지,아버지로 부터 받은 것을 물려받는 모든 것들을 상속이라고 말을 하죠. 상속을 받으면 순수하게 상속을 받고 그 다음의 우리의 인생은 본인이 형태를 변화해서 삶을 살아가죠. 따라서 상속은 클래스의 좀더 특별한 버젼을 만들기에 안성맞춤인데요. 각 객체들의 특성들을 다른 상황으로 코딩할 때 매우..

2009.02.12 22:58

델리게이트와 이벤트(Event)의 관계에 대한 설명(2)

이번에는 우리가 기존부터 가지고 활용했던 자동차의 소스를 가지고 요리해 볼 생각입니다. 소스를 event 와 delegate 를 활용한 부분만 소스를 나누어서 설명하고,  총체적은 소스는 자료게시판에 올릴 것이니 다운받으셔서 테스트 해보시기 바랍니다. 115줄과 121줄에 대해 간략히 설명을 하겠습니다. 120번 줄에 OnCarReqMessage(this,..

2009.02.12 22:51

델리게이트와 이벤트(Event)의 관계에 대한 설명(1)

이벤트란 무엇일까요?   심재운님 !! 이벤트가 파티이벤트나 결혼이벤트..이런 것인가요? .... 저도 잘.... ^^; 그래서 영어사전을 오늘도 뒤져 보았습니다. "사건"이라고 하고 뭔가 발생된다고 하네요. 간단히 정의를 하면... 다른 객체에게 뭔가 일어났다~~... 후딱 그러니까 이에 해당되는 코드는 나와서 실행해라. .... 라고 명령을 주는 겁니다. ..

2009.02.12 22:43

델리게이트(Delegate) 연산에 대한 설명

이번에는 델리게이트 연산에 대해 설명을 하고자 합니다. 델리게이트는 더하거나 뺄수가 있답니다. 또한 여개가 묶인 delegate 를 특정 delegate 만 제거할 수도 있답니다. 이해가 안가신다면 간단한 예를 들어보죠. 델리게이트 c를 부르면 a와 b가 동시에 부르게 됩니다.  간단히 표현을 하면  c = a + b; 델리게이트 d에 c와 a 를 빼고자 한다면?&..

델리게이트(Delegate)에 대한 설명

이번에는 delegate 을 살펴보겠는데요. 먼저 사전을 뒤져보니 흠... 위임이라고 하네요. 무엇을 위임하겠다는 의미인지 깊에 살펴봐야 겠는데요. 제가 삼국지3를 하면서 위임이라는 기능이 있더군요. 보니까, 왕대신 니가 맡아서 운영해라..~~ 아예 권한을 주더군요. 자.~~ 왕이 귀찮으니 니가 해라는 것 같은데요.  왕을 메소드로 비유하고 니는 delegate 가 하면 되겠네요. c#을 하면서 d..

2009.02.12 22:29

인덱서(Indexer)에 대한 설명

인덱서를 배울텐데요. 생긴것은 프로퍼티와 비슷합니다. 왜 쓸까요? 프로퍼티랑 비슷한데 굳이 사용할 필요가 있을까요?  프로퍼티는 get,set 메소드를 사용하여 필드값을 설정하거나 가져오는데요. 이 값이 적절한 값인지 검사해보고도 싶죠.  그래서 인덱서를 정의하자면....  클래스를 모아 구성해 놓은 배열을 이용하는 것이라고 생각하면 되겠죠.  생긴 모양새를 보죠. 데이터타입 this[int index..

소멸자(Deconstructor)에 대한 설명

생성자는 저번에 소개했고요. 이번에는 반대말인 소멸자에 대해서 설명을 할려고 합니다. 그럼 소멸자는 무엇일까요? 한마디로 객체를 더 이상 사용할 필요가 없을 때 부르게 되는데요. 자바에도 있지만, c#에도 가비지컬렉터이 있답니다. 영어로 garbage collector 라고 하네요. 쓰레기 수집가라..ㅋㅋ 역할은 제거하거나 할당했던 것들을 풀어주는 역할입니다. 알아서 쓰레기 수집가가 소멸자를 불러서 처리 해준다고 하네요. 언제 불러..

2009.02.12 02:37

연산자 overloading (오버로딩) 에 대한 설명

이번은 연산자 overloading 에 대해 설명하고자 합니다. 앞에 연산자라는 말만 바꿨는데요. 연산자로 뭔가 하겠다는 의미인데요. 연산자라고 하면 +, -, *, / 등 사칙연산도 있고, 비교 연산자인 ==,!= 등 이런것들도 연산자이죠. 한마디로 연산자들을 중복해서 정의하겠다는 의미이겠죠. 메소드 오버로딩은 메소드 이름을 중복해서 정의하겠다는 의미이고요. 사실..개발자 입장에서 보면 맨날 메소드나 프로퍼티로만 작업하기에는 힘들기..

2009.02.12 02:31

메소드 overloading (오버로딩) 에 대한 설명

이번에는 메소드 오버로딩에 대해 설명하고자 합니다. 영어로 overloading 이라고 하는데요. 풀어서 해석을 하자면, 같은 이름을 가진 여러개의 메소드라고 정의하면 쉽게 해석이 될 것 같네요. 그럼..이름이 동일하다면 구분은 어떻게 해요?라고 질문을 하는 분들이 있는데요. 그것은 메서드의 매개변수의 형을 보고 알수 있답니다. 먼저 오버로딩이 아닌 기본적인 메소드 방법으로 살펴보고 그 다음에 오버로딩으로 된 소스를 설명해 드리겠습니..

2009.02.12 02:28

this 키워드에 대한 설명

this 키워드는 객체에서 자기 자신을 나타내는 것이라고 생각하시면 되겠네요.  자신을 참조하는 this 를 이용하여 멤버를 사용할 수 있고, 자기자신을 직접 참조할 수 있는 참조변수가 될 수 있습니다. 사용용도는 여러군데에 있는데요. 이번에 소개하는 예제는 자신의 맴버를 가르키는 this 키워드 입니다.  그리고 나머지 기능은 생성자를 호출할때도 this 키워드를 사용합니다. 그리고 클래스 안에서만 사용이 가능하고 벗어날 경..

2009.02.12 02:25

Params 키워드에 대한 설명

일반적인 메소드는 받아들이는 인자 개수가 고정되어 있답니다. 따라서 유동적으로 변하게 할려면 어떻게 처리해야 하는게 좋을까요? params 키워드를 이용한다면 인자 개수를 유동적으로 구현할 수 있답니다. 아래 소스를 간략히 설명을 하자면 배열형태이기 때문에 인자 개수를 구할 때는 Length 를 사용합니다. 자바에서는 length 소문자이죠. 꼭 대문자로 앞에 L을 기재해 주시기 바랍니다. 13번째줄 처럼 그냥 인자로 1부터 6까지의..

2009.02.12 02:22

Ref,Out 에 대한 참조 설명

reference 즉 참조라는 뜻이죠. 이 참조를 메소드에 있는 매개변수에 적용할 생각인데요. value type(값형) 인자는 변수의 값만 넘겨주는것으로 끝입니다. 아무리 메소드를 설정하여 내부에서 변수로 값을 바꿀려고 해도 바꿀수가 없습니다. 그래서 인자값을 넘기는 방식을 값만 가져와서 사용한다고 하여 value type 인자라고 합니다.  그러나 reference type 인자도 있는데요. 이것은 반대로..

2009.02.12 02:17

Method (함수)를 이용한 방법은?

이번에는 메소드의 용도가 무엇인지, 역할은 무엇인지를 알아보죠. 메소드는 함수라고도 하는데요. 또는 멤버함수라고도 하죠. 저는 메소드라는 말을 편히 씁니다.  여러분도 서적을 읽으시면서 해깔리지 마시기 바래요. 이번소스를 약간 변형했습니다. 메소드의 용도와 역할이 무엇인지를 살펴보죠. 결과를 보면... 변경된 소스내용만 빨간네모로 처리했습니다. 잘 보이실라나 모르겠네요...

2009.02.12 02:13

Static 키워드와 생성자에 대한 설명

static 키워드는 강좌를 설명했기 때문에 거론하지 않고요. 생성자 부분에 대해 설명을 하겠습니다. 우선 소스를 보시기 바랍니다. 결과값을 보시면 생성자 호출이 제일 먼저 출력된 것을 볼 수 있답니다. 그리고 static 메소드 호출 또한 인스턴스생성없이 곧바로 클래스로 접근이 가능합니다. 여기서 생성자란 무엇인지 설명하겠습니다. 위의 생성자를 보면 클래스 명과 동일하게 코딩 되어 있답..

2009.02.12 02:10

프로퍼티를 구현해 보자

이번에는 프로퍼티, property 에 대해 알아보죠. 우리는 항상 멤버변수를 public 으로 하여 접근이 전부 가능하도록 하였죠. 그러나 private 으로 접근자를 설정하면 곧바로 접근해서 사용할 수가 없답니다. ■ 예제를 하나 보죠. 8번부터 12번 까지가 프로퍼티를 기술한 부분입니다. 멤버필드의 접근자가 private 이기 때문에 접근이 불가능 하므로 접근하기 위해서 프로퍼티를 이용하여 ..