つまり、私が理解して{ get; set; }
いるように、これは「自動プロパティ」であり、@ Klausや@Brandonが言ったように、「バッキングフィールド」を持つプロパティを記述するための省略形です。したがって、この場合:
public class Genre
{
private string name; // This is the backing field
public string Name // This is your property
{
get => name;
set => name = value;
}
}
ただし、私と同じように-1時間ほど前に- プロパティとアクセサーが何であるかを本当に理解しておらず、いくつかの基本的な用語についてもよく理解していません。MSDNは、このようなものを学習するための優れたツールですが、初心者にとって必ずしも理解しやすいとは限りません。ここでは、これについて詳しく説明します。
get
およびset
はアクセサーです。つまり、プライベートフィールドのデータと情報にアクセスでき(通常はバッキングフィールドから)、通常はパブリック プロパティからアクセスします(上記の例を参照)。
上記のステートメントがかなり混乱することは否定できないので、いくつかの例を見てみましょう。このコードが音楽のジャンルを参照しているとしましょう。したがって、ジャンルジャンル内では、さまざまなジャンルの音楽が必要になります。ヒップホップ、ロック、カントリーの3つのジャンルが必要だとします。これを行うには、クラスの名前を使用して、そのクラスの新しいインスタンスを作成します。
Genre g1 = new Genre(); //Here we're creating a new instance of the class "Genre"
//called g1. We'll create as many as we need (3)
Genre g2 = new Genre();
Genre g3 = new Genre();
//Note the () following new Genre. I believe that's essential since we're creating a
//new instance of a class (Like I said, I'm a beginner so I can't tell you exactly why
//it's there but I do know it's essential)
ジャンルクラスのインスタンスを作成したので、上記で設定した 'Name' プロパティを使用してジャンル名を設定できます。
public string Name //Again, this is the 'Name' property
{ get; set; } //And this is the shorthand version the process we're doing right now
次のように記述することで、「g1」の名前をHip Hopに設定できます。
g1.Name = "Hip Hop";
ここで起こっていることは、ちょっと複雑です。同様に私が前に言った、get
そしてset
あなたがそうでなければアクセスすることはできないだろうと民間分野からのアクセス情報。そのプライベートフィールドから情報を読み取って返すことget
ができるだけです。そのプライベートフィールドにのみ情報を書き込むことができます。しかし、両方を持つプロパティを持つことにより、そして私たちがことができるしているが、これらの機能の両方を行います。そして書くことによって、私たちはNameプロパティからの関数を具体的に使用していますset
get
set
g1.Name = "Hip Hop";
set
set
という暗黙の変数を使用しますvalue
。基本的にこれが意味することは、内set
に「値」が表示されるときはいつでも、それは変数を参照しています。「値」変数。書き込むときは、変数を渡すためにg1.Name =
を使用=
していvalue
ます"Hip Hop"
。この場合はです。したがって、基本的には次のように考えることができます。
public class g1 //We've created an instance of the Genre Class called "g1"
{
private string name;
public string Name
{
get => name;
set => name = "Hip Hop"; //instead of 'value', "Hip Hop" is written because
//'value' in 'g1' was set to "Hip Hop" by previously
//writing 'g1.Name = "Hip Hop"'
}
}
上記の例は実際にはコードで記述されていないことに注意することが重要です。これは、バックグラウンドで何が行われているのかを表す架空のコードです。
これで、ジャンルのg1インスタンスの名前を設定したので、次のように書くことで名前を取得できると思います
console.WriteLine (g1.Name); //This uses the 'get' function from our 'Name' Property
//and returns the field 'name' which we just set to
//"Hip Hop"
これを実行すると、 "Hip Hop"
と、コンソールに入ります。
この説明のために、出力も含めて例を完成させます
using System;
public class Genre
{
public string Name { get; set; }
}
public class MainClass
{
public static void Main()
{
Genre g1 = new Genre();
Genre g2 = new Genre();
Genre g3 = new Genre();
g1.Name = "Hip Hop";
g2.Name = "Rock";
g3.Name = "Country";
Console.WriteLine ("Genres: {0}, {1}, {2}", g1.Name, g2.Name, g3.Name);
}
}
出力:
"Genres: Hip Hop, Rock, Country"