반응형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp15
{
class TESTINT
{
private int[] array = new int[6];
public int this[int index]
{
get { return array[index]; }
set { array[index] = value; }
}
}
class TEST
{
private string[] _array = new string[5];
public string this[int index]
{
get { return _array[index]; }
set { _array[index] = value; }
}
static void Main(string[] args)
{
TEST atest = new TEST();
atest[0] = " 할룽a";
atest[1] = " 할룽b";
atest[2] = " 할룽c";
atest[3] = " 할룽d";
atest[4] = " 할룽e";
Console.WriteLine(atest[2]);
//배열을 다루는 클래스를 만드는거
TESTINT atestint = new TESTINT();
atestint[0] = 4562;
atestint[1] = 2456;
atestint[2] = 6245;
atestint[3] = 5624;
atestint[4] = 4562;
atestint[5] = 2456;
Console.WriteLine(atestint[5]);
}
}
}
C# Indexer
C# Indexer는 클래스 객체의 데이타를 배열 형태로 인덱스를 써서 엑세스할 수 있게 해준다. 즉, 클래스 객체는 배열이 아님에도 불구하고, 마치 배열처럼 []를 사용하여 클래스 내의 특정 필드 데이타를 엑세스하는 것이다. 다음은 Indexer를 이용하여 문자 데이타를 클래스 객체에 넣은 예이다.
C# 인덱서 정의
C# Indexer는 특별한 문법인 this[ ] 를 써서 클래스 속성(Property)처럼 get과 set을 정의한다. 클래스 내부의 어떤 데이타를 리턴하는지는 클래스 디자인시 필요에 따라 정하게 될 것이고, 리턴 데이타 타입도 여러 가지로 지정할 수 있다.
입력 파라미터인 인덱스도 여러 데이타 타입을 쓸 수 있는데, 주로 int 나 string 타입을 사용하여 인덱스값을 주는 것이 일반적이다. 아래 예제는 간단한 인덱서 예로서, int 인덱스를 받아 배열의 데이타를 찾아 정수를 리턴하는 예이다.
using System;
using System.Runtime.InteropServices;
namespace ConsoleApp15
{
public class PropertyTest
{
public string _name;
public string GetName() //메소트를 통한 캡슐화!
{
return _name;
}
public void SetName(string value)
{
_name = value;
}
public string NAME { get; set; } // 프로퍼티 라고 부른다.
}
class TESTINT
{
private int[] array = new int[6];
public int this[int index]
{
get { return array[index]; }
set { array[index] = value; }
}
}
class TEST
{
private string[] _array = new string[5];
public string this[int index]
{
get { return _array[index]; }
set { _array[index] = value; }
}
static void Main(string[] args)
{
TEST atest = new TEST();
atest[0] = " 할룽a";
atest[1] = " 할룽b";
atest[2] = " 할룽c";
atest[3] = " 할룽d";
atest[4] = " 할룽e";
Console.WriteLine(atest[2]);
//배열을 다루는 클래스를 만드는거
TESTINT atestint = new TESTINT();
atestint[0] = 4562;
atestint[1] = 2456;
atestint[2] = 6245;
atestint[3] = 5624;
atestint[4] = 4562;
atestint[5] = 2456;
Console.WriteLine(atestint[5]);
PropertyTest pt = new PropertyTest();
pt.NAME = "헬로 키티"; // set 작동
Console.WriteLine(pt.NAME); // get 작동
//데이터를 객체지향으로 캡슐화하고 안전하게 보관 !
}
}
}
!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp17
{
class CAR
{
public string name;
}
class TESTcar
{
private CAR[] array = new CAR[5];
public CAR this [int index]
{
get {return array[index]; }
set { array[index] = value; }
}
static void Main(string[] args)
{
TESTcar tESTcar = new TESTcar();
tESTcar[0] = new CAR();
tESTcar[1] = new CAR();
tESTcar[0].name = "비오는 날에는 소시지빵";
tESTcar[1].name = "게임은 폭력적이야";
Console.WriteLine(tESTcar[1].name);
}
}
}
반응형
'C#' 카테고리의 다른 글
C# 기초 문법 -오버라이딩 /오버로딩/ 추상클래스,메서드/인터페이스-다중상속/ (0) | 2023.02.28 |
---|---|
C# - 소수인지 아닌지 판별하는 알고리즘! (0) | 2023.02.23 |
C# Winform 개발(자동 전산 파일 삭제 프로그램 ) (0) | 2023.02.23 |
C# - 데스크탑 WinForm/GITHUB 사용법 (0) | 2023.02.21 |
C# - 프로퍼티 문법/상속 복습(0603) (1) | 2023.02.21 |
C#- Main메서드 (2) | 2023.02.21 |