大佬教程收集整理的这篇文章主要介绍了vb.net – 直接和Ctype与枚举的区别,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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不具有相同的语法?然而,如果我在SELEctedCast之前将SELEctedValue转换为int,那么它可以工作
问候
_Eric
DirectCast是VB.Net中的一个转换机制,只允许CLR定义的转换.它比C#版本的转换更具限制性,因为它不考虑用户定义的转换.
CType是一个词汇投射机制.它考虑CLR规则,用户定义的转换和VB.Net定义的转换.简而言之,它将做任何事情,一切可能的话,创建一个对象到指定类型的有效转换.
在这种特殊情况下,您尝试将值转换为没有CLR定义的转换的枚举,因此它的失败. VB.Net运行库却能够找到一个词法转换来满足问题.
关于差异的体面讨论存在于这里:
以上是大佬教程为你收集整理的vb.net – 直接和Ctype与枚举的区别全部内容,希望文章能够帮你解决vb.net – 直接和Ctype与枚举的区别所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。