سؤال

لهذا السؤال حتى: ما هو C# ما يعادل صديق؟, ، كنت شخصياً أجبت "داخليًا" ، تمامًا مثل JA بين الإجابات! ومع ذلك ، يقول جون سكيت إنه لا يوجد معادلة مباشرة لصديق VB في C#. إذا قال جون سكيت ذلك ، فلن أكون الشخص الذي يخبره بخلاف ذلك! ؛ ص

أنا أتساءل كيف يمكن للكلمة الرئيسية داخلي (ج#) لا تكون مكافئًا صديق (vbnet) عندما تكون تعريفات كل منها هي:

صديق vbnet

ال صديق (Visual Basic) تحدد الكلمة الرئيسية في بيان الإعلان أنه يمكن الوصول إلى العناصر من داخل المجموعة نفسها ، ولكن ليس من خارج التجميع. [...

داخلي ج#

داخلي: يقتصر الوصول على التجميع الحالي.

لفهمي ، هذه التعريفات تعني نفس الشيء بالنسبة لي.

ثم ، على التوالي ، عندما أقوم بالترميز في vb.net ، أستخدم صديق الكلمة الرئيسية لتحديد أن فئة أو خاصية لا يمكن الوصول إليها إلا داخل التجميع حيث يتم إعلانها. نفس الشيء في C#، أنا أستخدم داخلي الكلمة الرئيسية لتحديد نفس الشيء.

  1. هل أفعل شيئًا أو أي شيء خاطئ من هذا المنظور؟

  2. ما هي التحسينات التي لا أحصل عليها؟

  3. هل يمكن لشخص ما أن يوضح كيف أو في أي صديق وداخلي ليس معادلات مباشرة؟

شكرا مقدما على أي من إجاباتك!

هل كانت مفيدة؟

المحلول

لقد قلت أنه لا يوجد ما يعادلها المباشر من C ++ مفهوم "الصديق". هذا ليس هو نفسه VB.NET Friend المفهوم الذي يعادل بالفعل internal في C#.

السياق مهم - لا تفترض أن نفس الكلمة تعني بالضبط نفس الشيء في جميع اللغات ... "ثابت" هو مثال كلاسيكي :)

نصائح أخرى

توضح إجابة جون (الأصلي) أنه يشير إلى C/C ++ friend الكلمة الرئيسية ، والتي تمنح الوصول الخاص إلى فئة أخرى. لا يوجد ما يعادلها المباشر في C#، ولكن هناك طريقة لتمديدها internal إلى مجموعة أخرى ، إلى حد كبير للاختبار.

بقدر ما أفهمها ، vb.net Friend هو نفس C# internal.

(كتبت ما سبق تمامًا كما أضاف جون إجابة هنا.)

عند مقارنة لغات .NET ، VB's friend يعادل C# internal. بمعنى أن أي شيء يتم تمييزه على هذا النحو لا يمكن الوصول إليه إلا من داخل المشروع/التجميع نفسه. يمكن دمجه مع protected لمزيد من السيطرة على الرؤية.

ال InternalsVisibleTo يمكن أن تكون السمة مفيدة لأغراض الاختبار ؛ على الرغم من الاسم ، فإنه ينطبق على VB بقدر ما ينطبق على C#. تجدر الإشارة إلى أن VB لم يدعم استخدام InternalsVisibleTo حتى .net 4.

هناك ما يعادلها الخام للكلمة الرئيسية C ++ Friend في التعليمات البرمجية المدارة. على الرغم من أنه يعمل على مستوى التجميع ، وليس مستوى الفصل. يمكنك استخدام ال [InternalsVisibleTo] ينسب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top