2017-05-18 16 views
0
class Student 
{ 
    private int Id { get; set; } 

    public Student(int current_Id) 
    { 
     this.Id = current_Id; 
    } 
} 

プロパティIDがクラスのコンストラクタに割り当てられた後、プロパティIDの変更を防止する方法を教えてください。 Idconstを使用するとエラーが発生します。コンストラクタでプロパティの変更が割り当てられた後のプロパティの変更を防止するにはどうすればよいですか?

+1

あなたの質問は不明です。あなたは、「生徒」が作成された後にIdを変更しないように頼んでいますか?それとも、生徒が生まれた後、なぜあなたはイドを変えられないのですか? – Sweeper

+0

はい私は生徒が作成された後にIdを変更しないように頼んでいます。 –

+0

'public readonly'または' public get/private set' –

答えて

0

マークIdは読み取り専用として:

public readonly int ID; 

readonlyプロパティは、クラスのコンストラクタで変更することができます。 Docs

また、あなたはcurrent_Idについて混乱しているようです。すべての生徒に異なるIDを付ける場合は、current_Idをコンストラクタパラメータではなくクラスのプライベート静的フィールドにします。

private static int current_Id = 0; 

constが動作しない理由はconstでマークされた事は、コンパイル時に定数値を持たなければならないということです。明らかに、学生IDはそのような価値ではありません。

+0

これはまさに私が探していたものです。どうもありがとうございます! –

+0

@EnesArslan私の回答があなたの質問に答えてくれたと思うなら、そのチェックマークをクリックして回答を受け入れることを検討してください! – Sweeper

0

あなたはプライベートの自己特性を持っています。これらの値は、インスタンスの作成後、インスタンスが作成されたスコープから変更することはできません。それらを変更する唯一の方法は、クラスのスコープから変更することです。あなたは(だけコンストラクタから許可)すべてでそれらの変更を許可しないようにしたい場合は、以下の方法

private int Id { get; } 

や@スイーパーの答えに書かれている通り、あなたが読み取り専用フィールドとプロパティを使用することができますでそれを行うことができます。

関連する問題