سؤال

واريد ان اضيف عضو بلدي لفئة ب StringBuilder، ولكن عندما أذهب لإنشائه التحسس لا يحقق ذلك.

public class myStringBuilder()
    Inherits System.Text.[StringBuilder should be here]
    ....
end class

هل من الممكن؟ بفضل

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

المحلول

وStringBuilder هو NotInheritable (sealed الملقب في C #) لذلك لا يمكن أن تجنيها من ذلك. قد تتمكن من محاولة التفاف StringBuilder في الفئة الخاصة بك أو النظر في استخدام بدلا من ذلك.

نصائح أخرى

لا، ب StringBuilder هو <ل أ href = "http://msdn.microsoft.com/en-us/library/h278d2d4.aspx" يختلط = "نوفولو noreferrer"> الطبقة NotInheritable. قد تتمكن من محاولة التفاف على ب StringBuilder سبيل المثال، ولكن يمكن 'ر ترث منه. يمكنك أيضا استخدام طرق الإرشاد ، إذا كنت تستخدم. NET 3.5.

وهذا هو ما خطرت لي، بالنسبة لأولئك الذين لديهم فضول:

Imports System.Runtime.CompilerServices
Module sbExtension
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, _
                                   ByVal arg0 As Object)
        oStr.AppendFormat("{0}{1}", String.Format(format, arg0), ControlChars.NewLine)
    End Sub
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, ByVal arg0 As Object, _
                                   ByVal arg1 As Object)
        oStr.AppendFormat("{0}{1}", String.Format(format, arg0, arg1), ControlChars.NewLine)
    End Sub
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, _
                                   ByVal arg0 As Object, _
                                   ByVal arg1 As Object, _
                                   ByVal arg2 As Object)
        oStr.AppendFormat("{0}{1}", String.Format(format, arg0, arg1, arg2), ControlChars.NewLine)
    End Sub
    <Extension()> _
   Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                  ByVal format As String, _
                                  ByVal ParamArray args() As Object)
        oStr.AppendFormat("{0}{1}", String.Format(format, args), ControlChars.NewLine)
    End Sub
End Module

وهي فئة مغلقة ... لذلك لا يسمح ب StringBuilder الميراث.

ومختومة ب StringBuilder. لا يمكنك ترث منه.

إذا كنت تستخدم إصدار سابق من صافي، يمكنك كتابة أساسا نفس الفئة StringBuilderExtensions ثم يدعو صراحة أسلوب ثابت بدلا من ذلك.

ومع صافي 3.5: myStringBuilder.MyExtensionMethod(etc...);

ما قبل الصافية 3.5: StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);

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