自分のメンバーを StringBuilder クラスに追加したいのですが、作成しようとしても IntelliSense で表示されません。
public class myStringBuilder()
Inherits System.Text.[StringBuilder should be here]
....
end class
それは可能ですか?ありがとう
自分のメンバーを StringBuilder クラスに追加したいのですが、作成しようとしても IntelliSense で表示されません。
public class myStringBuilder()
Inherits System.Text.[StringBuilder should be here]
....
end class
それは可能ですか?ありがとう
StringBuilder
はNotInheritable
(別名sealed
C#)であるため、そこから派生することはできません。StringBuilder
独自のクラスでラップするか、代わりに拡張メソッドを使用することを検討してください。
いいえ、StringBuilderは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
以前のバージョンの .Net を使用している場合は、基本的に同じ StringBuilderExtensions クラスを作成し、代わりに静的メソッドを明示的に呼び出すことができます。
.Net 3.5 の場合: myStringBuilder.MyExtensionMethod(etc...);
.Net 3.5 以前: StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);
StringBuilder はシール クラスなので、継承は許可されません。
StringBuilder は封印されています。そこから継承することはできません。