構造体のメソッド? - C#

『構造体のメソッド』などと聞き慣れない言葉に反応してみたが、実際はクラスのメソッドと見た目にはあまり変わりない書き方で追加出来てしまった。

構造体 サンプル:

public struct Human   
{  
   public float Height;  
   public float Weight;  
  
   public Human(float x, float y)  
   {  
     this.Height = x;  
     this.Weight = y;  
   }  
  
   public float BMI()  
   {  
     return (this.Weight/(this.Height*this.Height));  
   }  
}

コンストラクタのつもりで下記のように書いたのだが、
public Human(float x, float y)
しかし、
Human human = new Human();
このように、引数を指定せずに書いてもエラーにならない。

ではこのとき、構造体『Human』のフィールド『Height』『Weight』には何が入っているのか。

『human.Height』で中身を見ると、『Height』の型であるfloatの初期値『0.0』が格納されていた。つまり自動で初期値を格納する。

構造体のプロパティも可能

以下のようにプロパティも書けてしまった。
float fheight;

public float Height
{
    get { return fheight; }
    set { fheight = value; }
}

クラスとの違いは継承できないことぐらいか(例外あり)。
そうなるとクラスと構造体の違いが… ダメだ、混乱してきた。

0 Comments:

Sony Style(ソニースタイル)
デル株式会社

Recent Posts