معنى - ما هو الفرق بين المرجع والخروج؟(C#)




معنى كلمة عنوان بالانجليزي (4)

الطريقة الأكثر إيجازا لمشاهدته:

ريف = إنوت

أوت = أوت

أي تفسيرات موجزة؟

تمت الإجابة أيضا في: الفرق بين معلمات ريف و أوت في .NET


بالنسبة للمتصل:

  • بالنسبة إلى معلمة ريف، يجب أن يتم تعيين المتغير بالتأكيد
  • بالنسبة إلى معلمة خارج، لا يجب تعيين المتغير بالتأكيد، ولكن سيكون بعد إرجاع الطريقة

للطريقة:

  • يبدأ تشغيل معلمة ريف بالتأكيد، وليس لديك لتعيين أي قيمة لها
  • معلمة خارج لا تبدأ تعيين معين، وكان لديك للتأكد من أنه في أي وقت كنت العودة (دون استثناء) سيتم تعيين بالتأكيد

وبالتالي:

int x;
Foo(ref x); // Invalid: x isn't definitely assigned
Bar(out x); // Valid even though x isn't definitely assigned
Console.WriteLine(x); // Valid - x is now definitely assigned

...

public void Foo(ref int y)
{
    Console.WriteLine(y); // Valid
    // No need to assign value to y
}

public void Bar(out int y)
{
    Console.WriteLine(y); // Invalid: y isn't definitely assigned
    if (someCondition)
    {
        // Invalid - must assign value to y before returning
        return;
    }
    else if (someOtherCondition)
    {
        // Valid - don't need to assign value to y if we're throwing
        throw new Exception();
    }
    else
    {
        y = 10;
        // Valid - we can return once we've definitely assigned to y
        return;
    }
}

من مقالة مسن التي يذكرها أليكس،

ولا يطلب من المتصل بأسلوب يأخذ معلمة خارجا أن يعين للمتغير الذي تم تمريره كمعلمة خارج قبل المكالمة؛ ومع ذلك، مطلوب مطالبة لتعيين إلى المعلمة خارج قبل أن يعود.

في المقابل يتم اعتبار المعلمات ريف في البداية من قبل المتضرر. على هذا النحو، ليس مطلوبا من المتسابق لتعيين المعلمة ريف قبل الاستخدام.

لذلك لتلخيص، داخل الأسلوب يمكنك النظر المعلمات ريف ليتم تعيين، ولكن ليس من المعلمات - يجب تعيين هذه. خارج الأسلوب يجب أن يتصرف نفسه.


يتم استخدام وسائط تمرير المعلمة والخروج للسماح لطريقة لتغيير المتغيرات التي تم تمريرها بواسطة المتصل. الفرق بين المرجع والخروج هو خفية ولكن المهم. تم تصميم كل وضع تمرير معلمة لتطبيقه على سيناريو برمجة مختلفة قليلا. والفرق الهام بين معلمات الخروج والمعلمات هو قواعد التعيين المحددة التي يستخدمها كل منها.

ولا يطلب من المتصل بأسلوب يأخذ معلمة خارجا أن يعين للمتغير الذي تم تمريره كمعلمة خارج قبل المكالمة؛ ومع ذلك، مطلوب مطالبة لتعيين إلى المعلمة خارج قبل أن يعود.

المصدر: مسن







c#