هل هناك طريقة لجعل أساليب السلسلة "المدمرة" على غرار روبي؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

في روبي، الطرق التي تغير الكائن لها تأثير كبير في النهاية: string.downcase!

في C# عليك القيام بما يلي: foo = foo.ToLower()

هل هناك طريقة لعمل طريقة تمديد مثل:

foo.ConvertToLower()

من شأنه أن يتلاعب foo?

(أعتقد أن الإجابة هي لا لأن السلاسل غير قابلة للتغيير ولا يمكنك القيام بـ ref this في طريقة التمديد.)

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

المحلول

لا، أنت لا تستطيع أن تفعل هذا في طريقة التمديد. إعادة تعيين قيمة المتغير الذي تم تمريره في كمعلمة لديك لتمرير ذلك بالرجوع باستخدام ref المعلمة التعديل، ما لم يسمح للطرق الإرشاد. حتى لو كان هذا سيكون ممكنا، قد لا يكون هناك متغير لإعادة تعيين، كما هو الحال في "foo".ConvertToLower().

نصائح أخرى

هناك طريقتان لتغيير مثيل السلسلة:

  • انعكاس
  • رمز غير آمن

لا أوصي باستخدام أي منهما.سوف يكرهك زملائك المطورين إلى الأبد - خاصة إذا تم استخدام الطريقة لتغيير سلسلة تصادف أنها حرفية...

ويمكنك بالتأكيد كتابة طريقة التمديد لإعادة تعيين-سلسلة يخضع لعملية جراحية. على سبيل المثال:

public static void ConvertToLower(this string s)
{
   s = s.ToLower();
}

وهذا لا علاقة له مع ثبات سلاسل شيء.

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