반응형
반응형

이 인스턴스의 문자를 유니코드 문자 배열에 복사합니다.

네임스페이스:  System
어셈블리:  mscorlib(mscorlib.dll)
C#
public char[] ToCharArray()

반환 값

형식: array<System..::.Char>[]()[]
해당 요소가 이 인스턴스의 각 문자로 이루어진 유니코드 문자 배열을 반환합니다. 이 인스턴스가 빈 문자열이면 반환된 배열은 길이가 0인 빈 배열입니다.

다음 코드 예제에서는 String에서 유니코드 문자 배열을 쉽게 만드는 방법을 보여 줍니다. 만들어진 배열은 Split 메서드에서 사용됩니다.

using System;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      string delimStr = " ,.:";
      char[] delimiter = delimStr.ToCharArray();
      string words = "one two,three:four.";
      string[] split = null;

      outputBlock.Text += "The delimiters are:" + "\n";
      foreach (char ch in delimStr)
         outputBlock.Text += String.Format("   '{0}'", ch) + "\n";

      outputBlock.Text += "\n";

      split = words.Split(delimiter);
      foreach (string s in split)
      {
         outputBlock.Text += String.Format("'{0}'", s) + "\n";
      }
   }
}
// The example displays the following output:
//       
//       The delimiters are:
//          ''
//          ','
//          '.'
//          ':'
//          
//       'one'
//       'two'
//       'three'
//       'four'
//       ''    
반응형

'프로젝트 > 메신저관련' 카테고리의 다른 글

DescriptionAttribute 클래스  (0) 2010.02.19
extern(C# 참조)  (0) 2010.02.19
Collection / ArrayList / HashTable  (0) 2010.02.19
반응형

http://msdn.microsoft.com/ko-kr/library/system.componentmodel.descriptionattribute.aspx


속성 또는 이벤트에 대한 설명을 지정합니다.

네임스페이스:  System.ComponentModel
어셈블리:  System(System.dll)

C#
[AttributeUsageAttribute(AttributeTargets.All)]
public class DescriptionAttribute : Attribute

비주얼 디자이너는 속성 창 등에서 구성 요소 멤버를 참조할 때 지정된 설명을 표시할 수 있습니다. 이 특성의 값에 액세스하려면 Description을 호출합니다.

자세한 내용은 특성 개요특성을 사용하여 메타데이터 확장을 참조하십시오.

다음 예제에서는 MyImage 속성을 만듭니다. 이 속성에는 DescriptionAttributeCategoryAttribute의 두 가지 특성이 있습니다.

[Description("The image associated with the control"),Category("Appearance")] 
 public Image MyImage {
    get {
       // Insert code here.
       return image1;
    }
    set {
       // Insert code here.
    }
 }

다음 예제에서는 MyImage의 설명을 가져옵니다. 먼저 코드는 개체의 모든 속성이 들어 있는 PropertyDescriptorCollection을 가져옵니다. 다음에는 PropertyDescriptorCollection으로 인덱싱하여 MyImage를 가져옵니다. 그런 다음 이 속성의 특성을 반환하여 특성 변수에 저장합니다.

이 예제에서는 AttributeCollection에서 DescriptionAttribute를 검색한 다음 이를 콘솔 화면에 쓰는 방법으로 설명을 출력합니다.

// Gets the attributes for the property.
 AttributeCollection attributes = 
    TypeDescriptor.GetProperties(this)["MyImage"].Attributes;

 /* Prints the description by retrieving the DescriptionAttribute 
  * from the AttributeCollection. */
 DescriptionAttribute myAttribute = 
    (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
 Console.WriteLine(myAttribute.Description);
이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

반응형

'프로젝트 > 메신저관련' 카테고리의 다른 글

String..::.ToCharArray  (0) 2010.02.22
extern(C# 참조)  (0) 2010.02.19
Collection / ArrayList / HashTable  (0) 2010.02.19
반응형

extern 한정자는 외부에서 구현되는 메서드를 선언하는 데 사용됩니다. extern 한정자는 일반적으로 비관리 코드를 호출하기 위해 Interop 서비스를 사용할 때 DllImport 특성과 함께 사용됩니다. 이 경우 메서드는 다음 예제에서와 같이 static으로도 선언해야 합니다.

[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Note참고

extern 키워드는 외부 어셈블리 별칭을 정의하여 단일 어셈블리 내에서 동일한 구성 요소의 다른 버전을 참조할 수 있도록 합니다. 자세한 내용은 extern alias(C# 참조)를 참조하십시오.

abstract(C# 참조)extern 한정자를 함께 사용하여 같은 멤버를 제한할 수는 없습니다. extern 한정자는 메서드가 C# 코드 외부에서 구현됨을 나타내고 abstract 한정자는 해당 클래스에서 메서드가 구현되지 않음을 나타냅니다.

Note참고

extern 키워드는 C++에서보다 제한적으로 사용됩니다. C++ 키워드와 비교하려면 C++ 언어 참조의 Using extern to Specify Linkage를 참조하십시오.

다음 예제에서는 프로그램이 사용자로부터 문자열을 수신하여 메시지 상자에 표시합니다. 프로그램은 User32.dll 라이브러리에서 가져온 MessageBox 메서드를 사용합니다.

using System;
using System.Runtime.InteropServices;
class MainClass 
{
   [DllImport("User32.dll")]
   public static extern int MessageBox(int h, string m, string c, int type);

   static int Main() 
   {
      string myString; 
      Console.Write("Enter your message: ");
      myString = Console.ReadLine();
      return MessageBox(0, myString, "My Message Box", 0);
   }
}

이 예제에서는 C 프로그램에서 DLL을 만들며, 다음 예제의 C# 프로그램 내에서 이 DLL을 호출합니다.

// cmdll.c
// compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
   return i*10;
}

다음 예제에서는 두 개의 파일 CM.csCmdll.c를 사용하여 extern 한정자를 설명합니다. C 파일은 예제 2에서 만든 외부 DLL로, C# 프로그램 내에서 호출됩니다.

// cm.cs
using System;
using System.Runtime.InteropServices;
public class MainClass 
{
   [DllImport("Cmdll.dll")]
   public static extern int SampleMethod(int x);

   static void Main() 
   {
      Console.WriteLine("SampleMethod() returns {0}.", SampleMethod(5));
   }
}

출력

SampleMethod() returns 50.

프로젝트를 빌드하려면

  • Visual C++ 명령줄을 사용하여 Cmdll.c를 DLL로 컴파일합니다.

    cl /LD Cmdll.c

  • 명령줄을 사용하여 CM.cs를 컴파일합니다.

    csc CM.cs

이렇게 하면 실행 파일 CM.exe가 만들어집니다. 이 프로그램을 실행하면 SampleMethod는 값 5를 DLL 파일에 전달하고 DLL 파일은 이 값에 10을 곱한 값을 반환합니다.

반응형

'프로젝트 > 메신저관련' 카테고리의 다른 글

String..::.ToCharArray  (0) 2010.02.22
DescriptionAttribute 클래스  (0) 2010.02.19
Collection / ArrayList / HashTable  (0) 2010.02.19
반응형

  • Collection
    •  배열의 경우 인덱스를 사용하여 각 항목(element)에 접근하게 되는데, Collection은 인덱스를 사용하지 않고 모든 element에 순차적으로 접근할 수 있는 방법을 제공한다.
    •  각 element에 순차적으로 접근할 수 있도록 허용하는 객체의 집합니다.
    •  객체가 열거자(enumerator)라고 불리는 객체의 참조를 제공하면 collection이라 한다.
    •  열거자는 Collection 내의 항목을 순차적으로 엑세스 할 수 있다.
    •  foreach를 통해 객체의 내에 순차적으로 접근 할 수 있도록 기능을 제공한다.

 

  •  Collection의 동작
    • Collection이 foreach와 함께 사용될 때 foreach는 collectionm의 Ienumrable interface로 부터 GetEnumerator() method를 호출
    • GetEnumerator()는 IEnumerator interface를 구현한 열거자 객체(enumerator object)를 return
    • foreach는 이 열거자 객체로부터 IEnumerator interface를 얻어 method(MoveNext(), Reset())와 property(Current)를 호출

 

  • Custom Collection
    • collection을 만드려면 System.Collections namespace의 IEnumrable interface를 구현해야 한다.

    interface IEnumrable{

IEnumerator GetEnumerator(); // 열거자 객체를 반환

    }

    •  열거자 객체는 System.Collections의 IEnumerator를 구현한다.

  interface IEnumrator{

object Curren{get;}

bool MoveNext();

void Reset();

  }

 

    •   IEnumerator를 구현한 Class의 객체는 다음과 같이 작동을 구현
      •    객체 초기화시 어떤 element도 가리키지 않음
      •    MoveNext method를 호출하여 첫번째 element로 이동한다.
      •    Current property를 통해 element를 뽑아낸다.
      •    MoveNExt를 호출하여 다음 element로 이동
      •    위 과정을 마지막까지 반복
      •    Current property가 null을 return하면 더이상 접근할 항목이 없다는 의미
      •    Reset method를 호출하여 처음으로 돌아가거나, 처리 종료
      •    Reset 호출시에는 첫번째 element의 이전을 가리키므로 MoveNext

 

  • ArrayList
    • 객체를 배열로 만들어 사용하는데 유용한 기능을 제공
    • 확장성이 뛰어나 삽입/삭제/열거 등의 기능을 제공할 수 있다.
    • 배열의 크기를 초기에 지정할 수 있다.
    • 정의된 크기를 초과하면 자동으로 크기를 늘려준다.
    •  ArrayList와 Collection의 관계
      • ArrayList는 IEnumerable interface를 상속받는다.
      • 때문에 ArrayList의 GetEnumerator를 통해 열거자 객체를 얻을 수 있다.
      • 이를 통해 순차적으로 ArrayList에 접근할 수 있다.
    • 생성 및 초기화
      •    ArrayList myAL = new ArrayList(); // ArrayList 생성
      •    myAL.add(new car("그랜저", 100000)); //초기화
      •    myAL.add(new car("체어맨", 200000));
      •    myAL.add(new car("포텐샤", 300000));
    • ArrayList 정보

   myAL.Count; // 실제로 저장된 element의 수

   int MaxSize = myAL.Capacity; //현재 ArrayList 총 크기 얻기

   myAL.Capacity = 20; // 저장될 수 있는 총 용량 설정(Default는 16)

    • element 제거

   myAL.RemoveAt(1); // 0부터 시작해서 지정된 요소를 제거

 

    • ArrayList를 배열로 변환
      • parameter로 배열을 전달해야 하는 경우 사용(Type 변환 주의)

   Car[] CarArray = new Car[myAl.Count]; // 저장할 배열 생성

   for(int i=0; i<myAL.count; i++){

           CarArray[i] = (Car)myAL[i];

   }

   foreach(Car i in CarArray){

           Console.WriteLine("차종 : {0}, 가격 : {1}", i.carName, i.carPrice);

   }

 

  • HashTable
    • 특정 Key 값에 의해 element에 접근할 수 있도록 고안된 데이터 구조
    • 어떠한 형태의 객체이든 저장 가능

  Hashtable hash1 = new Hashtable(); // HashTable 객체 선언

 

  hash1.Add("690810", "홍길동");

  hash1.Add("701116", "박길동");

  hash1.Add("740210", "김길동");

  hash1.Add("720929", "이길동");

 

  foreach(string item1 in hash1.Keys) {  // key data type에 의한 foreach 출력

           Console.WriteLine(item1 + "       " + hash1[item1]);

  }

 

[파일첨부 : 해당 소스 파일]

 

출처 : (주)인터데브 솔루션 개발 사업부 박준호님의 C# 동영상 강좌

반응형

'프로젝트 > 메신저관련' 카테고리의 다른 글

String..::.ToCharArray  (0) 2010.02.22
DescriptionAttribute 클래스  (0) 2010.02.19
extern(C# 참조)  (0) 2010.02.19

+ Recent posts

반응형