string.format الهروب من VB مقابل C#
-
29-09-2019 - |
سؤال
أثناء البحث عن كيفية الهروب من اقتباس واحد في string.format ، وجدت الإجابة في لذلك: الهروب من اقتباس واحد في string.format ()
يبدو أنه مختلف بالنسبة لـ VB. لقد اختبرته ، وفي الواقع يحتاج C#
string s = DateTime.Now.ToString("MMM d \\'yy 'at' H:mmm");
بينما يحتاج VB
Dim s As String = Now.ToString("MMM d \'yy 'at' H:mmm")
لماذا يحتاج C# إلى اندلاء عكسي مزدوج ، و VB للاضطراب الخلفي واحد؟ قد يكون هذا سؤالًا سخيفًا إلى مستخدمي C# ، لكن بينما يمكنني قراءة C# ، لا اعتدت على كتابته.
المحلول
في C#، يمكن أن تحتوي الحرفية على تسلسل الهروب مثل n لخط جديد أو t للحصول على علامة تبويب أو "للحصول على عرض أسعار. إذا لم تكن بحاجة إلى الهروب ، فيمكنك بادئة الحرفي مع @ (على سبيل المثال: على سبيل المثال: @"MMM ..."
) والحصول على نفس السلسلة VB.
في VB ، لا يُسمح بالهروب أبدًا ، لذلك ليست هناك حاجة للهروب من الخلف.
نصائح أخرى
السبب في أن C# يدعم تسلسل الهروب داخل الأسلاك الحرفية عبر \
حرف. لا يوجد لدى VB آليات هروب ومن ثم الأغنية المنفردة \
تم تفسيره على أنه أ \
.
في C# يمكنك الحصول على نفس السلوك باستخدام السلاسل الحرفية
@"MMM d \'yy 'at' H:mmm"
في C# ، يكون لـ Backslash معنى ( n هو Tab newline t ....). لذا فإن backlslahs نفسها هي شخصية هروب - يجب عليك الهروب :) أو وضع علامة في السلسلة - وهذا يجعل "سلسلة غير هاربة" (عادة ما تستخدم للمسارات)
في C# سوف يهرب. سيصبح نصك "mmm d 'yy' في 'h: mmm". لا تحتاج إلى الهروب من الحرف في سلسلة. إذا كنت ستستخدم "في السلسلة من ناحية أخرى ، فستحتاج إلى الهروب منها حتى لا تنهي سلسلة" mmm d "yy " في "h: mmm". أو يمكنك أيضًا استخدام طريقة @"" String التي ستهرب تلقائيًا من الأحرف من أجلك (لا "رغم ذلك). لذلك يمكنك كتابة @" لن يكون هذا n سطرين "