تحويل تنسيق C# إلى VB
-
28-09-2019 - |
سؤال
أنا متأكد من أن هذا سؤال بسيط لكم يا رفاق ولكني لا أعرف ماذا يفعل هذا المطور.
name = String.Format(MyStringBuilder + "");
إذا قمت بتحويل هذا إلى VB ، أحصل على الرسالة "لم يتم تعريف المشغل + لنوع system.text.stringBuilder و string". نفس الشيء إذا استخدمت و.
المحلول
بالمعنى الدقيق للكلمة ، يمكن أن يكون MyStringBuilder في الكود الأصلي مثيلًا فارغًا ، وعندها يؤدي إجراء دعوة صريحة إلى .ToString () إلى استثناء. سيتم تنفيذ عينة الكود المقدمة بشكل صحيح. في VB ، قد ترغب في القول
Dim name As String
If MyStringBuilder Is Nothing Then
name = String.Empty
Else
name = MyStringBuilder.ToString()
End If
نصائح أخرى
يبدو كما لو أن الشخص الذي كتب أنه يحاول إجبار تحويل ضمني لـ MyStringBuilder إلى سلسلة باستخدام مشغل + بالاقتران مع السلسلة الفارغة.
لأداء هذه المهمة في VB تحتاج فقط:
name = MyStringBuilder.ToString()
هذا ليس منطقيًا بالنسبة لي لأن AFAICT تمرر حجة واحدة فقط إلى String.Format لا يفعل أي شيء.
إضافة "" إلى StringBuilder فقط إكراه على سلسلة.
name = MyStringBuilder.ToString();
سيكون كيف سأفعل هذا في C#. يجب أن يكون تحويل هذا البيان إلى VB أسهل.
استخدم mystringBuilder.toString (). سيؤدي ذلك إلى حل المشكلة.
أنت تحاول تسلسل كائن stringbuilder وسلسلة معًا - لن ينجح ذلك :)
name = String.Format(MyStringBuilder.ToString() + "");
هذا يجب أن يجمع بشكل صحيح.
في VB.NET ، ستستخدم "و" بدلاً من "+"
هذا الخط:
name = String.Format(MyStringBuilder + "");
يتسبب في مجموعة ضمنية من MyStringBuilder إلى السلسلة (باستخدام طريقة ToString ()) من أجل استخدام عامل "+". إنه نفس:
name = String.Format(MyStringBuilder.ToString() + "");
وهو نفسه
name = MyStringBuilder.ToString();
الذي يصبح هذا في vb.net:
name = MyStringBuilder.ToString()