C++/CLI では以下の構文になります。
CODE:
public ref class ConvertString
{
String^ m_ManageString;
public:
property String^ ManageString{
void set(String^ value)
{
m_ManageString = value;
}
String^ get()
{
return this->m_ManageString;
}
}
};
Visual Basicでのプロパティ構文はこうなります。
CODE:
Public Class ConvertString
Private m_ManageString As String
Public Property ManageString() As String
Get
Return m_ManageString
End Get
Set(ByVal value As String)
m_ManageString = value
End Set
End Property
End Class
C#でのプロパティ構文は以下のようになります。
CODE:
public class ConvertString
{
private string m_ManageString;
public string ManageString
{
get { return this.m_ManageString; }
set { m_ManageString = value; }
}
}
上記のコードを.NET アセンブリで見ると以下のように出力されています(
ILSpy使用)。
CODE:
// Method begins at RVA 0x2050
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldfld string TestProp.ConvertString::m_ManageString
IL_0006: ret
} // end of method ConvertString::get_ManageString
.method public hidebysig specialname
instance void set_ManageString (
string 'value'
) cil managed
{
// Method begins at RVA 0x2058
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: stfld string TestProp.ConvertString::m_ManageString
IL_0007: ret
} // end of method ConvertString::set_ManageString
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x2061
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method ConvertString::.ctor
// Properties
.property instance string ManageString()
{
.get instance string TestProp.ConvertString::get_ManageString()
.set instance void TestProp.ConvertString::set_ManageString(string)
}
} // end of class ConvertString