C++/CLI简写属性

Dan*_*Dan 22 c++-cli properties shorthand

开发人员如何在托管c ++中完成相同的操作?:

c#代码

public String SomeValue
{
  get;
  set;
}
Run Code Online (Sandbox Code Playgroud)

我已经在网上搜索并找到了一些解决方案,但鉴于getter/setter和托管c ++的丰富历史,很难区分哪种方法是正确的(最新的.NET 3.5)方式.

谢谢!

Meh*_*ari 38

托管C++不支持自动属性.您应该手动声明一个支持字段和访问者:

private: String* _internalSomeValue;
public:
__property String* get_SomeValue() { return _internalSomeValue; }
__property void set_SomeValue(String *value) { _internalSomeValue = value; }
Run Code Online (Sandbox Code Playgroud)

C++/CLI支持自动属性,语法非常简单:

public: property String^ SomeValue;
Run Code Online (Sandbox Code Playgroud)

更新(回复评论):

在C++/CLI中,使用自动属性语法时,无法单独控制每个访问器方法的可访问性.您需要自己定义支持字段和方法:

private: String^ field;
property String^ SomeValue { 
   public: String^ get() { return field; }
   private: void set(String^ value) { field = value; }
}
Run Code Online (Sandbox Code Playgroud)

  • 在C++/CLI版本中,我如何将setter设为私有? (6认同)

Boj*_*nik 19

在C++/CLI中,您只需:

property String^ SomeValue;
Run Code Online (Sandbox Code Playgroud)