1

integer は 32 ビットのデータ型で、long は 64 ビットのデータ型などだと理解しています。文字列は何ビットですか?

プリミティブ型から文字列への暗黙のキャストは常に拡大キャストですか? たとえば、次のコードを参照してください。

Public sub routine1(byval strParam as string)

End sub

Public sub routine2()

    Dim intTest As Integer
    intTest = 1
    routine1(intTest)

End sub

intTest が boolean、int、long、decimal など (すべてのプリミティブ型) であるかどうかに関係なく、これは常に安全に実行できますか。

別の質問では、回答者は次のように述べています。彼らが「すべてではない」と言うとき、.ToString()をオーバーライドする必要があるFooなどのカスタムタイプを参照していると思います。これは正しいです。

問題は、プリミティブ型から文字列への暗黙のキャストは常に安全かということです。

4

1 に答える 1

0

routine1という名前のメソッド/サブルーチンは、文字列引数を受け入れます。他のオブジェクトを渡そうとすると、そのオブジェクトの ToString メソッドが呼び出されます。Objectクラス自体には ToString メソッドの既定の実装があるため、プリミティブを含む任意の型のオブジェクトを渡すことに問題はありませんが、オブジェクトに意味のある表現を提供するために ToString メソッドがオーバーライドされていない場合、無意味な表現が得られる可能性があります。

于 2013-10-24T07:09:56.007 に答える