へのキャストが許可されている間は、キャストstring
などbool
は不可能であることを私は知っています。(int)MyString
(short)MyBool
int
short
残念ながら、私は説明を見つけることができませんでした。だからここで聞いてる。
一部のデータ型を明示的にキャストできないのはなぜですか (文字列を他の型などに変換する方法を尋ねているわけではありません)。
明示的な変換 (キャスト): 明示的な変換にはキャスト演算子が必要です。キャストは、変換で情報が失われる可能性がある場合、または他の理由で変換が成功しない可能性がある場合に必要です。典型的な例としては、精度が低いか範囲が狭い型への数値変換や、基底クラスのインスタンスから派生クラスへの変換などがあります。
From:明示的な変換
一部のコンパイラでは、縮小変換をサポートするために明示的な変換が必要です。これは、変換を実行する言語固有の方法です。C# や C++ などの一部の言語では、キャストを使用して明示的な変換が実行されます。実行する変換の型を定義するデータ型を変換の前に付けると、キャストが発生します。Visual Basic では、CType 関数を使用して、暗黙的に許可されていないデータ型の明示的な変換を許可します。
これは、言語設計者がプログラマーに変換の方法を選択させるために行った決定です。
この文字列をint:と見なします"4.99999999999999999999999999999999999999999999999999999999"
。Int32の答えはどうあるべきですか?4
または5
?
この文字列から日付への変換について考えてみます"5/8/12"
。米国では、これはになりますがMay 8th
、英国では、になりますAugust 5th
。
精度が低下しない暗黙のキャストが存在します。
安全な変換(データを誤解するリスクがない)がある場合、明示的なキャストが存在しますが、一部の正確な情報が失われる可能性があります。
stringからint、bool、dateなどの残りのケースには変換が存在します。