积极答复者
关于VB.net新增Char类型的问题

问题
-
我之前是用VB 6.0的现在在VB2008上经常在字符比较遇到问题,主要是Char类型和称为Char类型数组的String类型同为""时不相等
Dim MyString As String=""
Dim MyChar As Char=""
Dim I as int32
' 判断 MyChar =MysSring ' MyChar 并不等于MyString
I=Asc("") '不行,有异常
I=Asc(myString) '不行,有异常
I=Asc(myChr) ' 然而 I=0
I=len(myChr) 'i=2
I=len(myString) 'i=0
myChr =mid("ABCD",5,1) 'myChr = Nothing
String=mid("ABCD",5,1) 'myStr=""
以为Char 类型比String更在处理单个字符更有效
'Chr变量 在mid函数或者其它字符串被赋值如 myChar="" 时
然而:
myString="ABCD"
for i=0 to 5
if myChar=mid(myString,i,1) then exit for '找不到'(你会怀疑这样做的用途,但不要怀疑有些情况说不定)
next
作为Char数组的String类型和Char类型同为""时为什么就不同呢?
是不是Char类型不要和String不能一同比较?如果不能那么Char在VB.NET有什么用途?
希望 Char 类型 ,String类型,字符常量,"ABCD"等等都在编译器内部转化为数字,在要显示的时候用函数显示,这样对字符处更有效.
如果这样:
YouChar = Mid(YouText, xYouText_I, 1)'不管YouChar是怎样来反正是一个字符
I2 = Asc(YouChar)
For I = 48 To 57 '即字符0到9 '
If I2 = I Then Exit for
Next
用这样代替哇太好了:
YouChar = Mid(YouText, xYouText_I, 1)'不管YouChar是怎样来反正是一个字符
For I = "0" To "9" '即数字48 To 57
If I2 = YouChar Then Exit for
Next
如果比下面的效率更明显了:
YouChar = Mid(YouText, xYouText_I, 1)'不管YouChar是怎样来反正是一个字符
For I = 1 To 10
If mid("0123456789",I,1)= YouChar Then Exit for
Next
我的邮箱13421512580@139.com别名senten_csg@139.com请高手来函见解
答案
-
你好,Char数组与String不是同一数据类型,不能直接比较!。.NET 中,字符串一般都保存在String中。
jon.valett@gmail.com- 已标记为答案 Riquel_DongModerator 2009年8月14日 5:55
-
你好!
String并不是Char数组,String为引用类型,是.NET Framework提供的类!
周雪峰- 已标记为答案 Riquel_DongModerator 2009年8月14日 5:55
-
您好,Char与String间不可以直接使用等号的,因为这是两个不同的数据类型如果需要比较的话,您可以使用Char的ToString方法,例如
Dim c As Char = "T"c Dim s As String = "T" If c.ToString = s Then 'xxxxxx End If
Mid方法返回的结果依然是String类型,所以类似于 YouChar = Mid(YouText, xYouText_I, 1) 的写法也是不正确的。从string中取得某一位置的Char的方法是,使用字符串的Char(index)属性,例如Dim s As String = "ABCDEFG" Dim c = s.Chars(4) '→ c="E"c
It's never too late to learn- 已标记为答案 Riquel_DongModerator 2009年8月14日 5:55
全部回复
-
你好!
String并不是Char数组,String为引用类型,是.NET Framework提供的类!
周雪峰- 已标记为答案 Riquel_DongModerator 2009年8月14日 5:55
-
您好,Char与String间不可以直接使用等号的,因为这是两个不同的数据类型如果需要比较的话,您可以使用Char的ToString方法,例如
Dim c As Char = "T"c Dim s As String = "T" If c.ToString = s Then 'xxxxxx End If
Mid方法返回的结果依然是String类型,所以类似于 YouChar = Mid(YouText, xYouText_I, 1) 的写法也是不正确的。从string中取得某一位置的Char的方法是,使用字符串的Char(index)属性,例如Dim s As String = "ABCDEFG" Dim c = s.Chars(4) '→ c="E"c
It's never too late to learn- 已标记为答案 Riquel_DongModerator 2009年8月14日 5:55
-
你好,Char数组与String不是同一数据类型,不能直接比较!。.NET 中,字符串一般都保存在String中。
jon.valett@gmail.com- 已标记为答案 Riquel_DongModerator 2009年8月14日 5:55