
서적을 읽다 정말 천재적인 방법을 발견하여 기록해 보겠습니다!
배열을 사용하다 보니 가장 자주 발생하는 에러가 System.IndexOutOfRangeException 에러이더군요.

모든 상황에서 index 에러를 방지하는 것은 쉽지 않습니다.
아래와 같이 설계하면 해당 예외를 대비할 수 있습니다.
get 메서드에서 예외 방지 조건을 추가하는 것입니다.
public class Program
{
public static void Main(string[] args)
{
IntArray intArray = new IntArray();
int a = intArray[10];
}
}
public class IntArray
{
private int size = 10;
public int[] _items;
public IntArray()
{
_items = new int[size];
}
public int this[int index]
{
get
{
if (index < 0 || index >= size)
{
return 999;
}
return _items[index];
}
set
{
_items[index] = value;
}
}
}
저는 위 예제에서 예외상황 발생 시 999를 리턴하도록 했지만, 이 방식은 제너릭 타입의 배열에서는 사용할 수 없습니다.
제너릭 타입의 배열을 사용할 때에는 default 예약어를 사용하도록 합니다.
public class Program
{
public static void Main(string[] args)
{
TestArray<int> testArray = new TestArray<int>();
int a = testArray[10];
}
}
public class TestArray<T>
{
private int size = 10;
public T[] _items;
public TestArray()
{
_items = new T[size];
}
public T this[int index]
{
get
{
if (index < 0 || index >= size)
{
return default(T);
}
return _items[index];
}
set
{
_items[index] = value;
}
}
}
끝!
'Server > C#' 카테고리의 다른 글
C#의 장점 (2) | 2023.08.03 |
---|---|
정확하게 코딩했는지 확인하자! 나의 프로그램 테스트 방법 (0) | 2023.07.18 |
[C#] ??= (0) | 2023.06.20 |
[C#] FirstOrDefault (0) | 2023.06.20 |
C# 델리게이트 (0) | 2023.06.09 |

서적을 읽다 정말 천재적인 방법을 발견하여 기록해 보겠습니다!
배열을 사용하다 보니 가장 자주 발생하는 에러가 System.IndexOutOfRangeException 에러이더군요.

모든 상황에서 index 에러를 방지하는 것은 쉽지 않습니다.
아래와 같이 설계하면 해당 예외를 대비할 수 있습니다.
get 메서드에서 예외 방지 조건을 추가하는 것입니다.
public class Program
{
public static void Main(string[] args)
{
IntArray intArray = new IntArray();
int a = intArray[10];
}
}
public class IntArray
{
private int size = 10;
public int[] _items;
public IntArray()
{
_items = new int[size];
}
public int this[int index]
{
get
{
if (index < 0 || index >= size)
{
return 999;
}
return _items[index];
}
set
{
_items[index] = value;
}
}
}
저는 위 예제에서 예외상황 발생 시 999를 리턴하도록 했지만, 이 방식은 제너릭 타입의 배열에서는 사용할 수 없습니다.
제너릭 타입의 배열을 사용할 때에는 default 예약어를 사용하도록 합니다.
public class Program
{
public static void Main(string[] args)
{
TestArray<int> testArray = new TestArray<int>();
int a = testArray[10];
}
}
public class TestArray<T>
{
private int size = 10;
public T[] _items;
public TestArray()
{
_items = new T[size];
}
public T this[int index]
{
get
{
if (index < 0 || index >= size)
{
return default(T);
}
return _items[index];
}
set
{
_items[index] = value;
}
}
}
끝!
'Server > C#' 카테고리의 다른 글
C#의 장점 (2) | 2023.08.03 |
---|---|
정확하게 코딩했는지 확인하자! 나의 프로그램 테스트 방법 (0) | 2023.07.18 |
[C#] ??= (0) | 2023.06.20 |
[C#] FirstOrDefault (0) | 2023.06.20 |
C# 델리게이트 (0) | 2023.06.09 |