23

开发人员如何在托管 c++ 中执行此操作?:

c# 代码

public String SomeValue
{
  get;
  set;
}

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

谢谢!

4

3 回答 3

38

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

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

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

public: property String^ SomeValue;

更新(回复评论):

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

private: String^ field;
property String^ SomeValue { 
   public: String^ get() { return field; }
   private: void set(String^ value) { field = value; }
}
于 2009-12-15T14:30:22.967 回答
19

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

property String^ SomeValue;
于 2009-12-15T14:30:58.003 回答
4

只是为了给你更多的搜索词,这被称为一个琐碎的属性

于 2009-12-15T14:40:32.777 回答