هل هناك طريقة لتقليل فعل استخدام string.format (... ، p1 ، p2 ، p3)؟
-
03-10-2019 - |
سؤال
كثيرا ما أستخدم String.Format()
لأنه يجعل بناء السلاسل أكثر قابلية للقراءة ويمكن التحكم فيه.
هل هناك على أي حال لتقليل فعله النحوي ، على سبيل المثال مع طريقة التمديد ، وما إلى ذلك؟
Logger.LogEntry(String.Format("text '{0}' registered", pair.IdCode));
public static void LogEntry(string message)
{
...
}
على سبيل المثال ، أود استخدام جميع الأساليب الخاصة بي وغيرها التي تتلقى سلسلة بالطريقة التي أستخدمها Console.Write()
, ، على سبيل المثال:
Logger.LogEntry("text '{0}' registered", pair.IdCode);
المحلول
ماذا عن:
static void LogEntry(string format, params object[] args) {
Console.WriteLine(format, args); // For example.
}
الآن يمكنك أن تسميها مثل هذا:
Logger.LogEntry("text '{0}' registered", pair.IdCode);
نصائح أخرى
إذا كنت تتحكم في Logger.LogEntry
الطريقة ، يمكنك ببساطة إضافة تحميل زائد يشمل string.format. فقط أعلن المعلمة الثانية باعتبارها paramarray وأنت على ما يرام!
نعم ، يمكنك إنشاء طريقة تمديد اسمها Formatith ، والتي تتيح لك أن تقول أشياء مثل:
Logger.LogEntry("I hate my {0}".FormatWith(itemName));
يجب أن يكون الأمر سهلاً بما يكفي لدحث خاص بك ، ولكن إليك مثال: http://james.newtonking.com/archive/2008/03/27/formatwith-string-format-extension-method.aspx
إذا Logger.LogEntry
هي طريقة ثابتة خارج سيطرتك ، ثم لا ؛ يمكنك فقط إضافة طرق تمديد إلى الحالات. إذا كان نوعك ، يمكنك إضافة:
public static void LogEntry(string format, params object[] args) {
... string.Format(format,args) ...
}
يمكنك استخدام الكلمة الرئيسية Params لدمج جميع الوسائط بعد الوسيطة الأولى في صفيف وتمرير تلك الصفيف إلى String.Format.
static void FormatString(string myString, params string[] format)
{
Console.WriteLine(String.Format(myString, format));
}