73 . 연산자오버로드
.NET프로그래밍/C# 3.5 SP1 2009. 8. 17. 15:15 |
==> 연산자오버로드.cs
using System;
public class 연산자오버로드
{
public static void Main()
{
// int 키워드를 Integer로 모방
//Integer i = new Integer(10);
Integer i = 10; // 위 라인 대체
//Integer j = new Integer(20);
Integer j = 20;
//Integer k = new Integer(0);
Integer k = 0;
//i.Value++;를 i++;로 줄여쓰고 싶으면 단한연산자 오버로드 코드블록이 있어야 한다.
i++; // 단항 연산자 오버로드
--j;
//k.Value = i.Value + j.Value;
k = i + j; // 이항 연산자 오버로드
k = k - i;
Console.WriteLine(Integer.MaxValue);
Console.WriteLine(Integer.MinValue);
//Console.WriteLine(k.Value);
Console.WriteLine(k); // ToString() 메서드 오버라이드
}
}
public partial class Integer
{
// 상수형 필드 : 상수는 반드시 선언 동시 초기화
public const int MaxValue = int.MaxValue;
// 읽기전용 필드 : 선언동시초기화 또는 생성자초기화
public static readonly int MinValue = int.MinValue;
// 정적생성자를 통해서 읽기전용필드 초기화 가능
static Integer()
{
MinValue = int.MinValue;
}
}
==============================================================================================
==> Integer.cs
using System;
public partial class Integer
{
private int value;
public Integer(int value)
{
this.value = value;
}
public int Value
{
get { return value; }
set { this.value = value; }
}
// 변환연산자
public static implicit operator Integer(int value)
{
return new Integer(value);
}
// ToString() 메서드 오버라이드
public override string ToString()
{
return value.ToString(); // 기본 값을 외부에 개체명으로 공개
}
// 단항 연산자 오버로드
public static Integer operator ++(Integer data)
{
return ++data.value;
}
public static Integer operator --(Integer data)
{
return --data.value;
}
// 이항 연산자 오버로드
public static Integer operator +(Integer a, Integer b)
{
return (a.value + b.value);
}
public static Integer operator -(Integer a, Integer b)
{
return (a.value - b.value);
}
}
'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글
75. 리스트제네릭클래스 (0) | 2009.08.17 |
---|---|
74. 예외처리 (0) | 2009.08.17 |
72. 변환연산자 (0) | 2009.08.17 |
71. 반복기(Iterator) (0) | 2009.08.17 |
70. 암시적으로 형식화된 로컬 변수 (0) | 2009.08.17 |