23

開発者はマネージC++でこれと同等のことをどのように行いますか?:

c#コード

public String SomeValue
{
  get;
  set;
}

私はネットを調べていくつかの解決策を見つけましたが、ゲッター/セッターとマネージ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 に答える