반응형
Program.cs |
using System; public class 연산자오버로드 { public static void Main() { //선언과 동시에 초기화 변환연산자 사용 (int 키워드를 Integer로 모방) //Integer i = new Integer(10); Integer i = 10; //위 라인 대체 Integer j = 20; //Integer j = new Integer(20); Integer k = 0; //Integer k = new Integer(0); //i.Value++; i++; //단항 연산자 오버로드 --j; //Integer k = 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); //ToString() 메서드 오버라이드 } } public partial class Integer //공개는 상수형, 읽기전용이 아니면 공개안함 { //상수형 필드 : 상수는 반드시 선언 동시 초기화 //public static int MaxValue = int.MaxValue;//외부의 공개를 막기 위해 public const int MaxValue = int.MaxValue; //상수형으로 모방 //읽기전용 필드 : 선언 동시에 초기화 또는, 생성자 초기화 public static readonly int MinValue = int.MinValue; //필드로 선언. 외부에 공개됨. //정적생성자를 통해서 읽기전용 필드 초기화가능 static Integer() { MinValue = int.MinValue; } } |
상수형필드와 읽기전용필드의 의미는 상수는 반드시 선언 동시 초기화
읽기전용필드는 선언 동시 초기화 또는 생성자를 통해서 초기화
Interger.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; //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); } } |
결과화면
반응형
'C#' 카테고리의 다른 글
75.C# - 형식 매개변수에 대한 제약조건 (0) | 2009.08.18 |
---|---|
74.C# - 제네릭 클래스 (Generic Class) (0) | 2009.08.18 |
72.C# - 리스트 제네릭 클래스 ( List Generic Class) (0) | 2009.08.18 |
71.C# - 예외처리 (0) | 2009.08.17 |
70.C# - 변환연산자 (0) | 2009.08.17 |
Comments