Directcast&Ctypeとの違いenums
-
21-09-2019 - |
質問
Public Enum Fruit
Red_Apple = 1
Oranges
Ripe_Banana
End Enum
Private Sub InitCombosRegular()
Dim d1 As New Dictionary(Of Int16, String)
For Each e In [Enum].GetValues(GetType(Fruit))
d1.Add(CShort(e), Replace(e.ToString, "_", " "))
Next
ComboBox1.DataSource = d1.ToList
ComboBox1.DisplayMember = "Value"
ComboBox1.ValueMember = "Key"
ComboBox1.SelectedIndex = 0
End Sub
'This fails
Dim combo1 = DirectCast(ComboBox1.SelectedValue, Fruit) ' Fails
'these both work
Dim combo2 = DirectCast(CInt(ComboBox1.SelectedValue), Fruit) 'works
Dim combo3 = CType(ComboBox1.SelectedValue, Fruit) 'works
のはなぜですか CType
仕事の DirectCast
ない同じ構文?だかキャストの selectedValue
へ int
以前 DirectCast
, その作品
について
_Eric
解決
ありがとうございましたので CType
や DirectCast
根本的に異なる事業です。
DirectCast
は鋳造機構VB.Net できるだけCLR定義換。もますます制限のC#版鋳造しないので考えるユーザー定義換。
CType
は語彙鋳造機構。ついて考慮をはらいながらCLR規ユーザー定義し、コンバージョンVB.Net 定義換。短で何かを作成することが可能で有効な変換のためのオブジェクトを指定されたタイプです。
この場合に変換する値の列挙型が付けられていないCLR定義の変換があり、したがって、それらの合否もない。のVB.Net 実行しを見つけることができました。る語彙の変換を満たす問題です。
ワ議論の違いが存在する。
所属していません StackOverflow