C# 인덱스 사용 자습서
개요
색인자(Indexer)는 객체가 배열처럼 아래 첨자로 접근할 수 있도록 합니다.
클래스에 색인기를 정의할 때, 이 클래스의 동작은 가상 그룹 (virtualarray) 과 같습니다.그룹 액세스 연산자 [] 를 사용하여 클래스의 구성원에 액세스할 수 있습니다.
문법
1차원 인덱스의 구문은 다음과 같습니다.
element-type this[int index]
{
// get
get
{
// index
}
// set
set
{
// index
}
}
색인(Indexer)의 용도
색인기의 행위에 대한 성명은 어느 정도 속성 (property) 과 유사합니다.속성 (property) 처럼 get과 set 접근기를 사용하여 인덱스를 정의할 수 있습니다.단, 속성은 특정한 데이터 구성원을 되돌려주거나 설정하고, 인덱스는 대상 실례의 특정한 값을 되돌려주거나 설정합니다.다시 말하면, 실례 데이터를 더 작은 부분으로 나누고, 모든 부분을 색인하고, 모든 부분을 가져오거나 설정한다.
속성 (property) 을 정의하면 속성 이름을 제공합니다.색인자가 정의할 때 이름은 없지만,this 키워드는 대상의 실례를 가리킨다.다음 예제에서는 이 개념을 보여 줍니다.
using System;
namespace IndexerApplication
{
class IndexedNames
{
private string[] namelist = new string[size];
static public int size = 10;
public IndexedNames()
{
for (int i = 0; i < size; i++)
namelist[i] = "N. A.";
}
public string this[int index]
{
get
{
string tmp;
if( index >= 0 && index <= size-1 )
{
tmp = namelist[index];
}
else
{
tmp = "";
}
return ( tmp );
}
set
{
if( index >= 0 && index <= size-1 )
{
namelist[index] = value;
}
}
}
static void Main(string[] args)
{
IndexedNames names = new IndexedNames();
names[0] = "Zara";
names[1] = "Riz";
names[2] = "Nuha";
names[3] = "Asif";
names[4] = "Davinder";
names[5] = "Sunil";
names[6] = "Rubic";
for ( int i = 0; i < IndexedNames.size; i++ )
{
Console.WriteLine(names[i]);
}
Console.ReadKey();
}
}
}
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 발생합니다.Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.
인덱스 다시 로드(Indexer)
색인(Indexer)을 다시 로드할 수 있습니다.인덱스가 선언될 때도 여러 개의 인자를 가지고 있을 수 있으며, 매개 인자는 서로 다른 유형일 수 있다.색인기가 정형화되어야 할 필요는 없다.C# 인덱스는 문자열 유형과 같은 다른 유형일 수 있습니다.
다음 예제에서는 인덱스 재부팅을 보여 줍니다.
using System;
namespace IndexerApplication
{
class IndexedNames
{
private string[] namelist = new string[size];
static public int size = 10;
public IndexedNames()
{
for (int i = 0; i < size; i++)
{
namelist[i] = "N. A.";
}
}
public string this[int index]
{
get
{
string tmp;
if( index >= 0 && index <= size-1 )
{
tmp = namelist[index];
}
else
{
tmp = "";
}
return ( tmp );
}
set
{
if( index >= 0 && index <= size-1 )
{
namelist[index] = value;
}
}
}
public int this[string name]
{
get
{
int index = 0;
while(index < size)
{
if (namelist[index] == name)
{
return index;
}
index++;
}
return index;
}
}
static void Main(string[] args)
{
IndexedNames names = new IndexedNames();
names[0] = "Zara";
names[1] = "Riz";
names[2] = "Nuha";
names[3] = "Asif";
names[4] = "Davinder";
names[5] = "Sunil";
names[6] = "Rubic";
// int
for (int i = 0; i < IndexedNames.size; i++)
{
Console.WriteLine(names[i]);
}
// string
Console.WriteLine(names["Nuha"]);
Console.ReadKey();
}
}
}
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 발생합니다.Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.
이
이상은 C#색인기의 사용 강좌에 대한 상세한 내용입니다. C#색인기의 사용에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.