プロパティを作るのC#シンタックスシュガーの道の間にいくつかの内部の違いがあります:C#で読み込み専用のパブリック変数を使用することはできますか?
public string FirstName { get; set; }
、ちょうどこのようなパブリック変数作る:私は最初の方法が好ましく、2番目されているとし
public string LastName;
は、避けてください。
public readonly string InternalCode;
は、読み取り専用プロパティを作成するには、このAベストプラクティスの方法です。しかし、私は多くの場合、読み取り専用プロパティのこのタイプは、上述した第2のタイプの形態である使用されて参照してください?
using System;
namespace TestProps
{
class Program
{
static void Main(string[] args)
{
Customer customer = new Customer();
customer.FirstName = "Jim";
customer.LastName = "Smith";
customer.Show();
}
}
class Customer
{
public string FirstName { get; set; } //prefered
public string LastName; //avoid
public readonly string InternalCode; //???
public Customer()
{
InternalCode = "234729834723984";
}
public void Show()
{
Console.WriteLine("{0}, {1} ({2})", LastName, FirstName, InternalCode);
Console.ReadLine();
}
}
}
その記事は私の質問に直接2ページ対応しました、ありがとう!私はそれから、ジョンは "公開読んだばかりのブールIsValid;"最後に言及しているように、ネストされたクラスに入っていない限り、 –
長い記事ではなく答えを探している人には、スポイラーアラートを追加して、イエスかノー答えを与えることができますか? – DOK
Skeetの記事は、実際には2つの例外を作成しますが、そのうちの1つはこの質問に適用できます。記事によると、 "私はstring.Emptyのような静的な読み取り専用フィールドの小さな例外を作成します"。この質問は変更されている可能性があり、コンストラクタから同じ行に代入を移動すると、public static readonly string InternalCode = "234729834723984";このように、Skeetと同様に「静的な読み取り専用フィールド」になります。 – John