استخدام الكلمة الأساسية "this" في المعلمات الرسمية للطرق الثابتة في C#
-
21-08-2019 - |
سؤال
لقد صادفت عدة مثيلات لرمز C# مثل ما يلي:
public static int Foo(this MyClass arg)
ولم أتمكن من العثور على تفسير لما this
الكلمة الأساسية تعني في هذه الحالة.أي رؤى؟
المحلول
هذا طريقة التمديد.انظر هنا ل توضيح.
تتيح طرق التمديد للمطورين إضافة طرق جديدة إلى العقد العام لنوع CLR الحالي ، دون الحاجة إلى فئة فرعية أو إعادة ترجمة النوع الأصلي.تساعد أساليب التمديد في مزج مرونة "كتابة البط" التي تدعمها شعبية في اللغات الديناميكية اليوم مع الأداء والتحقق من صحة وقت الترجمة من اللغات القوية.
تتيح طرق التمديد مجموعة متنوعة من السيناريوهات المفيدة ، وتساعد على جعل إطار استعلام LINQ القوي حقًا ....
هذا يعني أنه يمكنك الاتصال
MyClass myClass = new MyClass();
int i = myClass.Foo();
بدلا من
MyClass myClass = new MyClass();
int i = Foo(myClass);
وهذا يسمح ببناء واجهات بطلاقة على النحو المبين أدناه.
نصائح أخرى
سكوت قو نقلت بلوق وظيفة و> يفسر ذلك بشكل جيد.
وبالنسبة لي، فإن الجواب على السؤال هو في العبارة التالية في هذا المنصب:
<اقتباس فقرة>وملاحظة كيف أن أسلوب ثابت فوق لديه "هذا" الكلمة قبل الأول حجة المعلمة من نوع السلسلة. هذا يقول المترجم أن هذا يجب أن تكون خاصة تمديد الطريقة إضافة إلى كائنات من نوع "السلسلة". ضمن IsValidEmailAddress () تطبيق الأسلوب يمكنني ثم الوصول إلى كافة الجمهور خصائص / طرق / أحداث المثال سلسلة الفعلي الذي طريقة ويجري دعا، وعودة صح / خطأ اعتمادا على ما إذا كان بريد إلكتروني صحيح أم لا.
اقتباس فقرة> <سوب> : في
يعرض التحسس وطرق الإرشاد مع السهم الأزرق (على سبيل المثال أمام "تجميع <>"):
وكنت في حاجة الى
using the.namespace.of.the.static.class.with.the.extension.methods;
وللطرق الإرشاد لتظهر وتكون متاحة، إذا كانت موجودة في مساحة اسم مختلف عن رمز استخدامها.
طرق الإرشاد . مرحبا بكم في جديد كليا العالم بطلاقة . :)
ولقد علمت هذا بنفسي في اليوم الآخر: أن هذه الكلمة ويعرف هذا الأسلوب قد يجري امتدادا للفئة التي تشرع ذلك. هكذا على سبيل المثال، سوف MyClass ديك طريقة تمديد جديد يسمى فو (والتي لا تقبل أي المعلمة وإرجاع عدد صحيح، بل يمكن أن تستخدم مع أي وسيلة عامة أخرى).
و"هذا" تمتد الطبقة التالية في القائمة المعلمة
وحتى في توقيع الأسلوب أدناه "هذا" تمتد "سلسلة". يتم تمرير الخط إلى وظيفة كحجة العادية إلى الأسلوب. سلسلة ثابتة [] العامة SplitCsvLine (هذا الخط سلسلة)
في المثال أعلاه "هذا" الطبقة يمتد المدمج في "سلسلة" الطبقة.