在C++/CLI,一個瑣碎的屬性是一個設置吸氣劑&二傳手未聲明。使用一個非平凡的屬性,getter & setter被明確聲明,其語法更像是一個普通的方法聲明,而不是C#的屬性語法。
public interface class IThisIsWhatANonIndexedNonTrivialPropertyLooksLike
{
property String^ MyProperty { String^ get(); void set(String^ value); }
};
由於索引屬性不允許簡單語法,因此我們需要爲索引屬性執行此操作。
public interface class ITestWithIndexer
{
property String^ default[int]
{
String^ get(int index);
void set(int index, String^ value);
}
};
這裏是我的測試代碼:
public ref class TestWithIndexer : public ITestWithIndexer
{
public:
property String^ default[int]
{
virtual String^ get(int index)
{
Debug::WriteLine("TestWithIndexer::default::get({0}) called", index);
return index.ToString();
}
virtual void set(int index, String^ value)
{
Debug::WriteLine("TestWithIndexer::default::set({0}) = {1}", index, value);
}
}
};
int main(array<System::String ^> ^args)
{
ITestWithIndexer^ test = gcnew TestWithIndexer();
Debug::WriteLine("The indexer returned '" + test[4] + "'");
test[5] = "foo";
}
輸出:
TestWithIndexer::default::get(4) called
The indexer returned '4'
TestWithIndexer::default::set(5) = foo
感謝您的詳細解答!解決了這個問題! :) – Sascha