C#/C#_기초강의

(C#) 연산자 오버로딩

코딩ABC 2023. 5. 23. 21:46
반응형

Point 클래스는 2D 공간에서 점을 나타내는 간단한 클래스로, X와 Y 좌표 값을 가지고 있습니다.

이 예제에서 Point 클래스는 X와 Y라는 두 개의 속성으로 정의를 했고,  생성자를 통해 X와 Y 값을 설정할 수 있습니다.

 

다음은 C#에서 Point 클래스와 해당 클래스의 연산자 오버로딩의 예제입니다.

연산자 오버로딩을 사용하여 Point 객체들 간의 덧셈과 뺄셈 연산을 수행할 수 있도록 구현하였습니다.

+ 연산자 오버로딩은 두 개의 Point 객체를 받아서 각각의 X 좌표와 Y 좌표를 더한 새로운 Point 객체를 반환합니다.

- 연산자 오버로딩은 두 개의 Point 객체를 받아서 각각의 X 좌표와 Y 좌표를 뺀 새로운 Point 객체를 반환합니다.

 

프로젝트는 "Windows Forms 앱"으로 만들었으며, 폼에 리스트 박스 1개, 버튼 1개를 배치하고 다음 코드를 작성합니다.

 

using System;

public class Point
{
    public int X { get; set; }
    public int Y { get; set; }

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }

    public static Point operator +(Point p1, Point p2)
    {
        return new Point(p1.X + p2.X, p1.Y + p2.Y);
    }

    public static Point operator -(Point p1, Point p2)
    {
        return new Point(p1.X - p2.X, p1.Y - p2.Y);
    }
}

 

 

using System;
using System.Windows.Forms;

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            Point p1 = new Point(2, 3);
            Point p2 = new Point(4, 5);

            listBox1.Items.Add(String.Format("Point 1: ({0}, {1})",
               p1.X, p1.Y));
            listBox1.Items.Add(String.Format("Point 2: ({0}, {1})",
               p2.X, p2.Y));

            Point sum = p1 + p2;
            listBox1.Items.Add(String.Format("Sum: ({0}, {1})",
               sum.X, sum.Y));

            Point difference = p1 - p2;
            listBox1.Items.Add(String.Format("Difference: ({0}, {1})",
               difference.X, difference.Y));
        }
    }
}

 

반응형