C++과 마찬가지로 C#/.NET에도 연산자 오버로딩을 지원한다.
연산자 오버로딩은 해당 언어 자체에서 제공하고 있는 연산자에 대하여 그 의미를 다시 부여하는 것을 말한다.
즉 +나 -, * 등과 같은 연산자는 원래의 의미인 4칙연산이 있지만 이것을 재정의하여 사용하게 해주는 것이다.
연산자 오버로딩은 자주 사용하는 문법은 아니지만 잘만 사용하면 문법자체가 간결해질 수 있다.
아래 코드를 보면 +와 - 연산자에 대해서 오버로딩 함수를 정의한 것을 볼 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | class Point { public int X { get; set; } public int Y { get; set; } public int Z { get; set; } public Point(int x,int y,int z) { this.X = x; this.Y = y; this.Z = z; } public static Point operator +(Point p1, Point p2) { return new Point(p1.X + p2.X, p1.Y + p2.Y, p1.Z + p2.Z); } public static Point operator -(Point p1, Point p2) { return new Point(p1.X - p2.X, p1.Y - p2.Y, p1.Z - p2.Z); } public String toString() { return "x: " + X + ", y: " + Y + ", z: " + Z; } } class Program { static void Main(string[] args) { Point p1 = new Point(5,4,11); Point p2 = new Point(1,3,3); Point addPoint = p1 + p2; Point subPoint = p1 - p2; Console.WriteLine(addPoint.toString()); Console.WriteLine(subPoint.toString()); } } | cs |
아래는 MSDN에 나와있는 연산자 오버로딩이 가능한 연산자이다.
자료출처 : https://msdn.microsoft.com/ko-kr/library/8edha89s(v=vs.120).aspx
'닷넷,C#,.NET' 카테고리의 다른 글
C#/.NET 델리게이트(delegate) 체인(chain) (0) | 2018.05.09 |
---|---|
C#/.NET 델리게이트(delegate)와 함수 포인터, 델리게이트 체인 (0) | 2018.05.09 |
C#/.NET get,set 키워드를 이용한 프로퍼티 (1) | 2018.05.08 |
C# 7.0에서의 Out 변수 변경점 (0) | 2018.05.06 |
C#/.NET readonly vs const 예제로 보는 차이점 (0) | 2018.05.06 |