2017-01-26 1 views
0

Глядя на учебник WCF, есть класс с объявлениями приватных переменных и общедоступными получателями и установщиками для этих объявлений. Возможно ли иметь такую ​​же комбинацию модификаторов (например, частные вары с публично доступными аксессуарами), используя короткие объявления get и set?C#: Можете ли вы смешивать модификаторы доступа к функциям при использовании getter/setter shortand?

Например:

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

Вы можете ограничивать доступ только по сравнению с модификатором доступа к свойствам при применении модификатора доступа к индивидуальному аксессуару. Другими словами, вы можете сделать доступным свойство public и accessor private. Тем не менее, что именно было бы объявлять так, как вы это делали, с модификатором свойств и модификаторами на ** обоих ** аксессуарах? По сути, ваше свойство было бы общедоступным (и поэтому компилятор запрещает вам применять модификатор доступа к обоим, он будет только позволять ** ** либо getter, либо setter). –

ответ

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

Вы не можете указать модификаторы доступа для обоих аксессуаров. –

Смежные вопросы