C#演算子リロードとインデックス


一、演算子の再ロード


前回のブログの記述に続いて、演算子のリロードを見て、前回のブログで述べたように、実は1つの方法の異なる状況に対する処理過程です.
演算子のリロードは新しい定義演算子の意味であり、総じて言えば演算子の役割を元の役割と少し異なるようにするが、表現の方法は同じであり、リロードされた論理演算子はペアで現れる必要があることに注意しなければならない.
==と!>と<=<と>=など
例を挙げます.
private  const  double  Epsilon=0.0000001;
public  static  bool  operator  ==(vector  lhs, vector  rhs)
{
      if (system.math.abs(lhs.x-rhs.x)<epsilon&&system.math.abs(lhs.y-rhs.y)<Epsilon&&system.math.abs(lhs.z-rhs.z)<Epsilon)
          return  true;
     else
          return  false;
}
public  static bool  operator  !=(vector  lhs,vector  rhs)
{
       return  !(lhs==rhs);
}

このうちlhsとrhsはオペレータの左右の操作数であり、再定義されたのは2つの操作数の関係であることに注意し、ここでは論理関係であることに注意するが、具体的な実現状況はあまり明らかではなく、彼が機能を書き換えることができることを知っただけであり、オペレータの特徴の下で書き換えるだけであり、例えば論理演算出力の結果は1または0などである.

二、インデックス


インデックスは一般的に宣言オブジェクトの記号であり、配列を例にとると、格納されているデータで表すこともできるし、配列の下付きでこのオブジェクトを表すこともできる.これがインデックスの役割である.実際の使い方は次のとおりです.
[ ]  this [    ]
{
       get{};
       set{};
}
     
ここでgetはインデックスを取得して取得するために使用され、setはインデックスを取得して追加するために使用されます.
次の写真の例は非常にイメージされています.
class  Photo
{
       string_title;
       public  Photo(string  title)
       {
              this._title=title;
       }
       public  string  Title
       {
                get
                {
                      return _title;
                 }
       }
}
class  Album
{
         Photo[]  photos;
         public  Album (int  capacity)
         {
                photos =new  Photo[capacity];
         }
         public  Photo  this [index]
         {
                   get
                   {
                          if (index<0||index>=photos.Length)
                          {
                                console.WriteLine(" ");
                                return   null;
                          }
                                return photos[index];
                   }
                   set
                   {
                           if(index<=0||index>=photos.Length)
                           {
                                    console.writeLine (" ");
                                    return;
                           }
                            photos[index]=value;
                   }
         }
}
static void  Main(string[] args)
{
       Album  friends = new Album(3);
       Photo  first =new Photo("Jenn");
       Photo second=new Photo("Smith");
       Photo  third=new  Photo("Mark");

       friends[0]=frist;
       friends[1]=second;
       friends[2]=third;

       Photo  obj1Photo =friends[2];
       console.writeline(obj1Photo.Title);
       Photo  obj2Photo =friends["Jenn"];
       console.writeline(obj2Photo.Title);
}
       
この例では、アルバム(album)というクラスにインデックスがあり、photo[index]と宣言されています.その中のindexは写真オブジェクトのシーケンス番号を表しています.写真を検索するときはインデックスで調べることも、名前で調べることもできます.これがインデックスの役割です.

三、まとめ


この2つの例の具体的な応用をまとめることで,先に学習したコンテンツ応用と別の使い方が分かったが,それ以外はthisを用いてインデックスを用いることが珍しく,オブジェクト向けのプログラミングにはまだまだ学ぶべきことが多いようだ.