【问题标题】:C++/CLI shorthand propertiesC++/CLI 速记属性
【发布时间】:2010-12-26 20:10:59
【问题描述】:

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

c#代码

public String SomeValue
{
  get;
  set;
}

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

谢谢!

【问题讨论】:

  • 托管 C++ 已过时。 C++/CLI 是当前的方法。
  • 抱歉,我正在使用 C++/CLI。我仍然使用旧名称:(
  • DanDan:C++/CLI 是一种完全不同的语言。虽然它是 Managed C++ 的继承者,但 Managed C++ 并不是它的旧名称。
  • 我会确保为正确的语言使用正确的名称。

标签: properties c++-cli shorthand


【解决方案1】:

托管 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; }
}

【讨论】:

  • 在 C++/CLI 版本中,我如何将 setter 设为私有,例如?
【解决方案2】:

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

property String^ SomeValue;

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2016-12-13
      相关资源
      最近更新 更多