문제

나는 내 멤버를 StringBuilder 클래스에 추가하고 싶지만, 내가 그것을 만들 때 지능적인 것은 그것을 가져 오지 않습니다.

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

가능합니까? 감사해요

도움이 되었습니까?

해결책

StringBuilder ~이다 NotInheritable (일명 sealed C#)에서는 파생 할 수 없습니다. 포장을 시도 할 수 있습니다 StringBuilder 자신의 수업에서 또는 사용을 고려하십시오 확장 방법 대신에.

다른 팁

아니, StringBuilder a 불가능합니다 수업. 당신은 포장을 시도 할 수 있습니다 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가 봉인되었습니다. 당신은 그것으로부터 상속 할 수 없습니다.

이전 버전의 .NET을 사용하는 경우 기본적으로 동일한 StringBuildErextensions 클래스를 작성한 다음 대신 정적 메소드를 명시 적으로 호출 할 수 있습니다.

.NET 3.5 : myStringBuilder.MyExtensionMethod(etc...);

Pre- .NET 3.5 : StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top