سؤال

أنا متأكد من أن هذا سؤال بسيط لكم يا رفاق ولكني لا أعرف ماذا يفعل هذا المطور.

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()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top