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

C#で演算子のオーバーロードを実装する方法をわかりやすく解説

C#における演算子のオーバーロード(Operator Overloading)とは、特別な名前を持つ関数(メソッド)として演算子の動作を定義できる機能です。定義には operator キーワードを使用し、その後にオーバーロードしたい演算子の記号を続けて記述します。

この機能を活用すると、自作したクラスや構造体に対しても「+」や「-」といった標準的な演算子を自然に使えるようになります。ここでは、Box クラスに「+」演算子をオーバーロードし、2つのオブジェクトを加算する具体例を見ていきましょう。

サンプルコード

using System;
namespace Demo {
    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;    // 箱の体積を格納する変数

            // 箱1のサイズ設定
            Box1.setLength(6.0);
            Box1.setBreadth(7.0);
            Box1.setHeight(5.0);

            // 箱2のサイズ設定
            Box2.setLength(12.0);
            Box2.setBreadth(13.0);
            Box2.setHeight(10.0);

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

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

            // 2つのオブジェクトを「+」演算子で加算
            Box3 = Box1 + Box2;

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

実行結果

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

コードのポイント

  • 演算子のオーバーロードは、必ず public static なメソッドとして宣言します。
  • operator+ は左辺と右辺の2つの Box オブジェクトを受け取り、加算結果を格納した新しい Box オブジェクトを返します。
  • Box3 = Box1 + Box2; のように、数値と同じ感覚でオブジェクト同士を直感的に加算できます。
  • 長さ・幅・高さのそれぞれが合計され、箱3の体積(5400)はそれらを掛け合わせた結果として計算されます。

このように演算子のオーバーロードを使いこなすことで、クラスの操作性が向上し、より読みやすく自然なコードを書くことができます。

  1. Android TVボックスのroot化を解除する方法【アプリ別手順を徹底解説】

    物事を元の状態に戻したくなることはよくあります。Android TVボックスも例外ではありません。root化(ルート権限の取得)を行ったものの、動作が不安定になったり、メーカー保証を受けられなくなったりして、元に戻したいと考えている方も多いのではないでしょうか。 そもそもAndroid TVボックスとは、普段お使いの液晶テレビやLEDテレビをスマートテレビとして活用できるようにするデバイスです。root化すれば端末の設定を自由にカスタマイズできますが、操作を誤ると端末が正常に動作しなくなるリスクもあります。そんなときは「root化の解除(アンルート)」を行うことで、端末を初期状態に戻すことが

  2. Android TVボックスをroot化(脱獄)する方法|メリット・デメリットとおすすめアプリを徹底解説

    本題に入る前に、あなたがテクノロジーで実験やカスタマイズをするのが好きなタイプかどうか、簡単な質問から始めましょう。 「普通の液晶テレビやLEDテレビを、自分の操作に応答してくれるスマートテレビに変えたいと思いませんか?」そして、「もしその方法があるなら、さらにカスタマイズしてみたいと思いますか?」 両方に「はい」と答えた方は、ぜひこの記事を最後までお読みください。最初の質問への答えは、ずばりAndroid TVボックスです。後者の質問への答えが、今回のテーマであるroot化(Root)/脱獄(Jailbreak)です。「root」と「jailbreak」は技術的にはほぼ同じ意味なので、本記事