Существуют ли методы получения и установки для защищенных членов класса в C++/CLI?

Существуют ли методы get и set для защищенных членов класса в C++/CLI, как в этот пример для C#?

private List<string> _myClassMember = null;

public List<string> MyClassMember
{
    get { return _myClassMember; }
    set { _myClassMember = value; }
}

person Community    schedule 20.03.2015    source источник


Ответы (1)


Да. Вы можете создать свойство в C++/CLI, которое ведет себя так же, как свойство C# в вашем вопросе.

ref class MyClass
{
private:
  List<String^>^ _myClassMember = nullptr;

public:
  property List<String^>^ MyClassMember
  {
    List<String^>^ get() { return _myClassMember; }
    void set(List<String^>^ value) { _myClassMember = value; }
  }
};
person Joel Rondeau    schedule 20.03.2015
comment
Вы даже можете использовать автоматическое свойство: property List<String^>^ MyClassMember; делает то же самое, что и List<String> MyClassMember { get; set; } в C#. - person Lucas Trzesniewski; 21.03.2015
comment
@ Лукас Тржесневски: спасибо! Но используя автоматическое свойство, как вы его написали, в этом примере, похоже, оно не ссылается на переменную _myClassMember, как в неавтоматическом. Или он автоматически находит переменную, на которую ссылается, добавляя _ к имени свойства? - person ; 21.03.2015
comment
@Andrius Андриус нет, смысл использования синтаксиса автоматического свойства в том, что вам больше не нужно использовать какую-либо частную переменную, она создается для вас. Это просто синтаксический сахар. Вы всегда просматриваете объект, а JIT встраивает вызовы за вас. Собственно как и в C#. - person Lucas Trzesniewski; 21.03.2015