C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#の演算子関数とは?operatorキーワードによる演算子のオーバーロード入門

演算子関数(operator関数)とは

C#における演算子関数とは、オーバーロードされた演算子のことで、特別な名前を持つ関数です。演算子関数を定義するには、operatorキーワードに続けて、定義したい演算子の記号を記述します。

通常の関数と同じように、オーバーロードされた演算子にも戻り値の型とパラメーターリストが必要です。

例えば、次のように記述します。

public static Box operator+ (Box b1, Box b2) {
}

構文のポイント

  • public static:演算子関数は必ず public かつ static として宣言する必要があります。
  • operator+operator キーワードの後に、オーバーロードする演算子の記号(ここでは +)を続けます。
  • パラメーター:二項演算子の場合、左辺と右辺の2つのオペランドを受け取ります。

サンプルコード

以下は、C#で演算子関数を作成し、実際に使用する方法を示した完全なサンプルです。+ 演算子をオーバーロードすることで、2つの Box オブジェクトを加算できるようにしています。

using System;

namespace OperatorOvlApplication {
    class Box {
        private double length;   // 箱の長さ
        private double breadth;  // 箱の幅
        private double height;   // 箱の高さ

        public double getVolume() {
            return length * breadth * height;
        }

        public void setLength(double len) {
            length = len;
        }

        public void setBreadth(double bre) {
            breadth = bre;
        }

        public void setHeight(double hei) {
            height = hei;
        }

        // + 演算子をオーバーロードして、2つの Box オブジェクトを加算する
        public static Box operator+(Box b, Box c) {
            Box box = new Box();
            box.length = b.length + c.length;
            box.breadth = b.breadth + c.breadth;
            box.height = b.height + c.height;
            return box;
        }
    }

    class Tester {
        static void Main(string[] args) {
            Box Box1 = new Box();   // Box 型の Box1 を宣言
            Box Box2 = new Box();   // Box 型の Box2 を宣言
            Box Box3 = new Box();   // Box 型の Box3 を宣言
            double volume = 0.0;    // 箱の体積を格納する変数

            // Box1 の寸法を設定
            Box1.setLength(6.0);
            Box1.setBreadth(7.0);
            Box1.setHeight(5.0);

            // Box2 の寸法を設定
            Box2.setLength(12.0);
            Box2.setBreadth(13.0);
            Box2.setHeight(10.0);

            // Box1 の体積を表示
            volume = Box1.getVolume();
            Console.WriteLine("Volume of Box1 : {0}", volume);

            // Box2 の体積を表示
            volume = Box2.getVolume();
            Console.WriteLine("Volume of Box2 : {0}", volume);

            // 2つのオブジェクトを加算
            Box3 = Box1 + Box2;

            // Box3 の体積を表示
            volume = Box3.getVolume();
            Console.WriteLine("Volume of Box3 : {0}", volume);
            Console.ReadKey();
        }
    }
}

実行結果

Volume of Box1 : 210
Volume of Box2 : 1560
Volume of Box3 : 5985

処理の流れの解説

このプログラムは、次のような流れで動作します。

  1. Box1 には「長さ6.0 × 幅7.0 × 高さ5.0」の寸法が設定され、体積は 210 になります。
  2. Box2 には「長さ12.0 × 幅13.0 × 高さ10.0」の寸法が設定され、体積は 1560 になります。
  3. Box3 = Box1 + Box2; の行で、オーバーロードされた operator+ が呼び出され、各寸法を加算した新しい Box オブジェクトが生成されます。
  4. その結果、Box3 は「長さ18.0 × 幅20.0 × 高さ15.0」となり、体積は 5985 になります。

まとめ

演算子関数を活用することで、自作クラスに対しても直感的な演算子の振る舞いを定義できます。これにより、オブジェクト同士の操作を自然な形で表現でき、コード全体の可読性と保守性が大きく向上します。

  1. C#のクラスとは?基本構文からサンプルコードまで徹底解説

    C#におけるクラスとは、データ型の「設計図(ブループリント)」に相当するものです。クラスをもとに生成された実体をオブジェクトと呼び、オブジェクトはクラスのインスタンスであるといえます。また、クラスを構成するメソッドや変数は、まとめてクラスのメンバーと呼ばれます。クラスの一般的な定義形式C#でクラスを定義する際の一般的な書式は以下のとおりです。<アクセス修飾子> class クラス名 {     // メンバー変数     <アクセス修飾子> <データ型> 変数1;  &

  2. Pythonの演算子関数とは?operatorモジュールの基本と使い方

    Pythonには、算術演算・論理演算・比較演算・ビット演算といった数学的な操作を行うための標準ライブラリ関数が用意されています。これらの関数はすべてoperatorモジュールにまとめられています。 operatorモジュールを利用するには、まず標準ライブラリからインポートする必要があります。 import operator この記事では、operatorモジュールが提供する演算子関数のうち、特に使用頻度の高い「算術演算」と「比較(関係)演算」の関数を、サンプルコードと実行結果あわせて解説します。 算術演算の関数 まずは、四則演算など基本的な計算を行う関数から見ていきましょう。主な関数は以下