C#의 오버로드 할당 연산자

Muhammad Zeeshan 2023년10월12일
  1. C#의 연산자 오버로딩
  2. 암시적 변환 연산자를 사용하여 C#에서 할당 연산자 오버로딩 구현
C#의 오버로드 할당 연산자

이 문서에서는 C#을 사용하여 할당 연산자를 오버로드하는 방법을 설명합니다. 먼저 연산자 오버로딩에 대해 살펴보겠습니다.

C#의 연산자 오버로딩

내장 연산자를 재정의하는 방법을 연산자 오버로딩이라고 합니다. 피연산자 중 하나 또는 둘 다 사용자 정의 유형인 경우 다양한 작업의 사용자 정의 구현을 만들 수 있습니다.

암시적 변환 연산자를 사용하여 C#에서 할당 연산자 오버로딩 구현

암시적 변환 작업을 개발할 수 있습니다. 불변 구조체로 만드는 것은 또 다른 현명한 조치입니다.

프리미티브는 바로 그것이며, 그것이 그들로부터 상속하는 것을 불가능하게 만드는 것입니다.

추가 및 기타 연산자와 함께 아래 예제에서 암시적 변환 연산자를 개발합니다.

  • 시작하려면 다음 라이브러리를 가져옵니다.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.RegularExpressions;
    
  • Velocity라는 구조체를 만들고 value라는 이중 변수를 만듭니다.
    public struct Velocity {
      private readonly double value;
    }
    
  • Velocity에게 변수를 매개변수로 받는 공개 Velocity를 생성하도록 지시합니다.
    public Velocity(double value) {
      this.value = value;
    }
    
  • 이제 암시적 연산자인 Velocity를 만듭니다.
    public static implicit operator Velocity(double value) {
      return new Velocity(value);
    }
    
  • 그런 다음 오버로드할 더하기빼기 연산자를 만듭니다.
    public static Velocity operator +(Velocity first, Velocity second) {
      return new Velocity(first.value + second.value);
    }
    public static Velocity operator -(Velocity first, Velocity second) {
      return new Velocity(first.value - second.value);
    }
    
  • 마지막으로 Main() 메서드에서 Velocity 객체를 호출하여 오버로드합니다.
    static void Main() {
      Velocity v = 0;
      v = 17.4;
      v += 9.8;
    }
    

완전한 소스 코드:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

public struct Velocity {
  private readonly double value;

  public Velocity(double value) {
    this.value = value;
  }
  public static implicit operator Velocity(double value) {
    return new Velocity(value);
  }
  public static Velocity operator +(Velocity first, Velocity second) {
    return new Velocity(first.value + second.value);
  }
  public static Velocity operator -(Velocity first, Velocity second) {
    return new Velocity(first.value - second.value);
  }
}

class Example {
  static void Main() {
    Velocity v = 0;
    v = 17.4;
    v += 9.8;
  }
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

관련 문장 - Csharp Operator