2017-01-26 7 views
0

WCFチュートリアルでは、プライベート変数宣言とその宣言のパブリックゲッターとセッターを持つクラスがあります。ショートとgetsetの宣言を使用して、この同じ修飾語句の組み合わせ(つまり、公開されているアクセサーとのプライベート変数)を使用することはできますか?例えばC#:getter/setter shortを使用するときに関数アクセス修飾子を混在できますか?

public class MyClass{ 
    private int someNumber; 

    public int someNumber { 
    get {return someNumber;} 
    set {someNumber = value;} 
    } 
} 

この質問hereは、あなたがこのような修飾子を混在させることができます示唆:

public class MyClass{ 
    private int someNumber {public get; public set;}; 
} 

は正しいですか? (この具体的な例では、int someNumberをプライベート変数としてマークすることはできませんが、これは無意味なのでしょうか?)

+1

なぜそれを試してみませんか? – HimBromBeere

+3

個々のアクセサーにアクセス修飾子を適用する場合は、プロパティーアクセス修飾子と比較してのみアクセスを制限できます。つまり、プロパティをパブリックに、アクセサーをプライベートにすることができます。しかし、**両方のアクセサのプロパティ修飾子と修飾子を使って、それをあなたがやったように宣言するのはまさにポイントでしょうか?事実上、あなたのプロパティはパブリックになります(そして、そのため、コンパイラーは両方にアクセス修飾子を適用することを禁止します。**ゲッターまたはセッターのいずれかにしか許可しません)。 –

答えて

3

内部プロパティのメソッドだけでなく、プロパティ自体。

public int someNumber { get; private set; } 

これは、外部で読み取り専用のプロパティを作成する方法です。

これが動作しない(コンパイラが文句を言うだろう)と多くの意味がありません:

private int someNumber { get; public set; } 
0

あなたは別の可視性レベルを持つことができますが、あなたはいつもよりオープンに、より制限から行く必要があります。

public string MyProperty { get; internal set; } 

しかし、あなたが持つことができません:

たとえば、あなたが持つことができます

private string MyProperty { public get; set; } 

ゲッターのパブリックアクセス修飾子は、プロパティのプライベートアクセス修飾子よりも表示されているとおり。

+1

両方のアクセサーにアクセス修飾子を指定することはできません。 –

関連する問題