C++/CLI shorthand properties

DanDan picture DanDan · Dec 15, 2009 · Viewed 11.7k times · Source

How does a developer do the equivalent of this in managed c++? :

c# code

public String SomeValue
{
  get;
  set;
}

I've scoured the net and found some solutions, however it is hard to distinguish which is the correct (latest, .NET 3.5) way, given the colourful history of getters/setters and managed c++.

Thanks!

Answer

Mehrdad Afshari picture Mehrdad Afshari · Dec 15, 2009

Managed C++ does not support automatic properties. You should manually declare a backing field and the accessors:

private: String* _internalSomeValue;
public:
__property String* get_SomeValue() { return _internalSomeValue; }
__property void set_SomeValue(String *value) { _internalSomeValue = value; }

C++/CLI supports automatic properties with a very simple syntax:

public: property String^ SomeValue;

Update (reply to comment):

In C++/CLI, you cannot control the accessibility of each accessor method separately when you use the automatic property syntax. You need to define the backing field and the methods yourself:

private: String^ field;
property String^ SomeValue { 
   public: String^ get() { return field; }
   private: void set(String^ value) { field = value; }
}