VB.netで文字列連結を行っている間に、文字列を整数で連結しようとすると、奇妙なランタイムエラーが発生しました。ここでVisual Basicキャストの背後にある - 文字列から 'Double'型への変換が無効です
は私のバイオリンです:https://dotnetfiddle.net/NY4Y4V
Imports System
Imports System.Collections.Generic
Public Module Module1
Public Sub Main()
Dim t As Dictionary(Of Int32, DateTime?) = new Dictionary(Of Int32, DateTime?)
t.Add(12345, new DateTime())
For Each f As KeyValuePair(Of Int32, DateTime?) In t
Console.WriteLine("Test string {" + f.Key + "}.")
Next
End Sub
End Module
具体的には、私はなぜ例外興味:
System.InvalidCastExceptionの:変換文字列から "テスト文字列{" 'ダブル' を入力します有効じゃない。
が発生しています。私は明示的に整数を文字列に変換する場合、これは簡単な修正であることを知っている:
Console.WriteLine("Test string {" + f.Key.ToString() + "}.")
私は、この鋳造エラーが発生することを舞台裏で何が起こっているのか興味があるだけです。私はコード内のどこにいても倍精度浮動小数点型に触れていないので、 'Double'型のキャストがスローされる問題になるのは不明です。
'文字列の連結、オプションの厳密さを保証したい場合は、あなたの投稿でこれを言及してうれしい&演算子'を使うことができます。私は、私が働いている人々だけでなく、私が出会ったことのいくつかと噛み合っている無数の時間がどれくらいあるか分かりません。素晴らしい投稿! – Codexer
偉大な答え、ありがとう! – thomasdclark