public ref class MyConcreteClass : public IMyInterface
{
public:
virtual void __clrcall Foo(String^ value) sealed;
virtual property String^ __clrcall MyProperty
{ String^ get() sealed { String::Empty; } }
};
इंटरफेस आभासी रूप में परिभाषित किया जाना चाहिए। कक्षा की घोषणा के बाद "सार्वजनिक आईएम .." भी ध्यान दें, यह सी # की तुलना में एक बहुत ही अलग वाक्यविन्यास है।
यदि आप प्रदर्शन को बेहतर बनाने के लिए इंटरफ़ेस सदस्यों को सील कर सकते हैं, तो संकलक इन तरीकों को एक सामान्य आभासी सदस्यों की तुलना में अधिक कसकर बाध्य करने में सक्षम होंगे।
आशा है कि मदद करता है;)
मैं इसे संकलित नहीं किया लेकिन मेरे लिए अच्छा लग रहा है ... ओह और भी, अपने तरीके को परिभाषित करने __clrcall डबल thunk प्रदर्शन दंड के खतरों को समाप्त के रूप में।
संपादित एक संपत्ति के लिए सही सिंटैक्स है:
public ref class MyConcreteClass : public IMyInterface
{
public:
virtual property String^ MyProperty
{
String^ get() sealed { return String::Empty; };
void set(String^ s) sealed { };
}
};
या, जब स्रोत फ़ाइल में परिभाषा डाल:
public ref class MyConcreteClass : public IMyInterface
{
public:
virtual property String^ MyProperty
{
String^ get() sealed;
void set(String^ s) sealed;
}
};
String^ MyConcreteClass::MyProperty::get()
{
return String::Empty;
}
void MyConcreteClass::MyProperty::set(String^)
{
//...
}
कि के लिए धन्यवाद। क्या माइप्रोपर्टी घोषणा को 'संपत्ति' कीवर्ड की आवश्यकता नहीं है? उदाहरण के लिए ... आभासी संपत्ति स्ट्रिंग^MyProperty {स्ट्रिंग^__clrcall() सीलबंद {वापसी स्ट्रिंग :: खाली; }} –
धन्यवाद साइमन, मुझे इस मैराथन 30hour कोडिंग खिंचाव से पार किया जाना चाहिए !! =) – RandomNickName42
चूंकि यह Google में पहली हिट्स में से एक है, इसलिए मैंने गुणों के लिए सही वाक्यविन्यास के साथ उत्तर संपादित किया है, जो कि थोड़ी मुश्किल है। – stijn