استخدام الكلمة الأساسية "this" في المعلمات الرسمية للطرق الثابتة في C#

StackOverflow https://stackoverflow.com/questions/846766

  •  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);

وهذا يسمح ببناء واجهات بطلاقة على النحو المبين أدناه.

نصائح أخرى

<سوب> : في
يعرض التحسس وطرق الإرشاد مع السهم الأزرق (على سبيل المثال أمام "تجميع <>"):

وكنت في حاجة الى

using the.namespace.of.the.static.class.with.the.extension.methods;

وللطرق الإرشاد لتظهر وتكون متاحة، إذا كانت موجودة في مساحة اسم مختلف عن رمز استخدامها.

طرق الإرشاد . مرحبا بكم في جديد كليا العالم بطلاقة . :)

ولقد علمت هذا بنفسي في اليوم الآخر: أن هذه الكلمة ويعرف هذا الأسلوب قد يجري امتدادا للفئة التي تشرع ذلك. هكذا على سبيل المثال، سوف MyClass ديك طريقة تمديد جديد يسمى فو (والتي لا تقبل أي المعلمة وإرجاع عدد صحيح، بل يمكن أن تستخدم مع أي وسيلة عامة أخرى).

و"هذا" تمتد الطبقة التالية في القائمة المعلمة

وحتى في توقيع الأسلوب أدناه "هذا" تمتد "سلسلة". يتم تمرير الخط إلى وظيفة كحجة العادية إلى الأسلوب. سلسلة ثابتة [] العامة SplitCsvLine (هذا الخط سلسلة)

في المثال أعلاه "هذا" الطبقة يمتد المدمج في "سلسلة" الطبقة.

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