كيف يمكن إرجاع البنية كعمل واجهة؟
سؤال
والتعليمة البرمجية التالية يعمل، ولكن أنا لا يمكن معرفة ما يجري على الذاكرة الحكيمة. أين وكيف هو t
قيمة البنية نسخها؟
interface ITest { void Hello(); }
struct STest : ITest
{
public void Hello() { Console.WriteLine("Hello"); }
}
static ITest Make()
{
STest t = new STest();
return t;
}
static void Main(string[] args)
{
ITest it = Make();
it.Hello();
}
المحلول
عند يلقي البنية إلى واجهة، وصناديق البنية إذا كان هذا هو ما كنت طالبا؟ http://blogs.msdn.com/abhinaba/archive/2005 /10/05/477238.aspx
نصائح أخرى
وسيتم محاصر وعلى بيان return t;
. عند هذه النقطة، يتم نسخ القيمة من كومة إلى كومة.
وعند العودة من جعل ()، وتعيين إلى "أنه" كنت عودته نسخة من "تي" البنية من المكدس داخل الصنع ().
وبعد ذلك محاصر هذا إلى كائن، وأسند إلى واجهة "ذلك". واجهة، ويحمل إشارة إلى "محاصر" نسخة من البنية، والتي يمكنك بعد ذلك استخدام لدعوة مرحبا ().
لا تنتمي إلى StackOverflow