2016-11-18 8 views
-2

C#でメソッドとプロパティを使用するタイミングは? 彼らは同じことをすることができますが、両方を使用することができます。 また、単一の値ではなくC#のプロパティでオブジェクト全体を設定することも可能です。C#メソッドとプロパティ

+2

良い本を参照してください –

+2

https://msdn.microsoft.com/en-us/library/ms229006(v=vs.110).aspx –

+0

[プロパティ対メソッド](http:// stackoverflow。 com/questions/601621/properties-vs-methods) – Tim

答えて

2

プロパティがあり、多かれ少なかれ私たちはクラスについての異なるものを記述するために使用するもの。彼らは、クラスが何をすることができるのか、そしてそのクラスが何であるかを定義します。以下を考慮してください。

namespace Example 
    { 
     public class Person 
     { 
      public string Name { get; set; } 
      public int Age { get; set; } 
      public DateTime Birthday { get; set; } 
     } 
    } 

名前、年齢、および誕生日は、Personクラスのプロパティと見なされます。彼らは人が何であるかを定義し、クラスの価値を与える方法を教えてくれます。メソッドは、プロパティを使用してさまざまなことを行うために使用されます。しかし、これらはNameプロパティは、我々はPersonクラスのインスタンスを作成するたびに、それがアクセスできる公共の意味で考えると無意味だろう

public string GetName() 
{ 
    return Name; 
} 

public void SetName(string name) 
{ 
    Name = name; 
} 

:あなたのようなプロパティの値を取得または設定するメソッドを書くことができます。上記のメソッドは、Nameプロパティを設定したいがそれを非公開にしたい場合に使用されます。メソッドのもう1つの例は、Personクラスの新しいインスタンスを作成する方法が必要な場合です。デフォルトでは、Visual Studioは、あなたがそうのような新しいPersonオブジェクトをインスタンス化させます:

Person jim = new Person(); 

我々はまた、私たちは新しい人を作成し、同時にプロパティだ設定することを可能にする当社独自の「コンストラクタ」メソッドを書くことができますが。

public Person(string name, int age, DateTime birthday) 
{ 
    Name = name; 
    Age = age; 
    Birthday = birthday; 
} 

今、我々はコンストラクタメソッドを使用する新しいPersonオブジェクトをインスタンス化する簡単な、合理化された方法を持っている、と我々はそうのような新しいPersonオブジェクトを作成することができます。

Person jim = new Person("Jim", 25, DateTime.Today); 

しかし、方法の使用をそこにはいけない。 DateTimeはBirthdayプロパティを表す方法なので、文字列を適切なDateTimeに変換できるメソッドを記述できます。

public DateTime ConvertToDateTime(string date) 
{ 
     DateTime temp; 

     DateTime.TryParse(date, out temp); 

     return temp 
} 

今、私たちはこのように見えるために私たちのコンストラクタを変更することができます。

public Person(string name, int age, string birthday) 
{ 
    Name = name; 
    Age = age; 
    Birthday = ConvertToDateTime(birthday); 
} 

そして、このような新しいPersonオブジェクトインスタンス化することができます最終ノートで

Person jim = new Person("Jim", 25, "1/10/1995"); 

を、@vivekとしてヌナは言った、良い本を見つけよう!以前のC#クラスで使ってきた素晴らしいものはMurach's book on C#です。また、MSDN.comには、C#でコーディングする方法を学ぶために必要なすべてのドキュメントがあります。プロパティの詳細については、linkを、またはメソッドについての詳細はlinkをご覧ください。最後に、C#を学ぶために見つけた優れたチュートリアルはScott Lilly's Guide to C#です。 C#の機能を理解するだけでなく、きれいでシンプルなテキストベースのRPGを構築できます。

0

プロパーティーは単なる手の平であり、public getメソッドと公開セット メソッドと値を格納するプライベートフィールドを作成します。

// example propertie 
public string Name { get; set; } 

// at run time it is the same as: 
private string Name; 

public string GetName(){ 
    return this.Name; 
} 

public string SetName(string name){ 
    this.Name = name; 
} 

を参照してくださいイメージ:サンプルクラスはコードのみでproppertieを持っていますが、サンプル・クラスからすべてのメンバーを取得するためにリフレクションを使用する場合は、実行時にこれらのメソッドが生成されていることがわかりませんがコード内で見える。

set_name() get_name()

「それはプライベートと外のためvisableではありませんが、genratedされているため、プライベートフィールド名が表示されていない注意してください。」

enter image description here

関連する問題