关于vb.netfloat的信息( 二 )


2、类型转换 。VB提供了很多类型转换函数型运算符,如CInt(),CSng(),CStr()等,在C#中只要用(int),(float),(String)即可 。然而如果不是标准类型 , 如下面的C#语句:
((System.Button)sender).Text=“启动”;
就要使用VB的函数型运算符CType来实现 。上面的代码正确的移植方法是:
CType(sender,System.Button).Text=“启动”
千万不要使用某些人推荐的,将Option Strict关闭,然后用后期绑定调用sender对象的方法,这根本不符合程序移植不能改变本质的要求 。
3、修饰符和属性标签 。VB和C#的修饰符是完全对等存在的 , 但是拼写往往不同,给移植带来了很多麻烦 , 尤其是表示相同意思的关键字从字面理解完全不同的时候 。下面就给出了VB和C#对应的关键字:
VB
C#
VB
C#
Inherits
:
Implements
:
MustInherit
abstract
NotInheritable
sealed
Overridable
virtual
NotOverridable
sealed
MustOverride
abstract
Overrides
override
[Overloads]

Shadows
new
Shared
static
Public
public
Protected
protected
Friend
internal
Protected Friend
protected internal
Private
private
Static
用别的方法实现
ByVal

ByRef
ref
Optional

ParamArray
params
无法实现
unsafe
无法实现
fixed
可以看出,VB的关键字比较长 , 而且使用上也比C#更加严格 。从C#向VB移植的时候,要分外注意哪些VB有而C#没有的关键字以及在C#拼写相同,在VB中拼写不同的关键字(如MustOverride和MustInherit) 。有些关键字如unsafe,如果C#使用了他们 , 将无法移植到VB中 。好在这些关键字在商业应用中并不常用 。
属性标签在这两种语言中非常的相似,移植上应该没有任何难度,只要知道在C#中用方括号[]表示属性标签,而在VB中用的是尖括号 。另外,如果要用名称结合传递参数,C#直接使用=号,而VB使用:=(冒号和等号) 。
4、委派类型 。委派类型就是安全的函数指针类型 。在C#中,难以分辨是函数指针在工作还是函数本身在工作,因为他们的语法相同 。当要为一个委派类型的变量复制的时候,直接等于一个函数即可,如:
public delegate void FuncType(Object e)
...
FuncType func;
func=new FuncType(this.SampleFunction1);
//调用
func(something);
//换指向另外一个函数
func=this.SampleFunction2
然而VB中 , 委派类型就像是一般的对象,有它的方法,与函数本身明显不同 。你不能将过程的名字直接赋给一个委派类型的对象,而必须使用AddressOf运算符 , 下面的例子就是上文C#程序的VB版,注意那些实现不同的地方:
Public Delegate Sub FuncType(ByVal eAs Object)
...
Dim func As FuncType
func=New FuncType(AddressOf Me.SampleFunc1)
‘调用
func.Invoke(something)
‘换指向另外一个函数
func=AddressOf Me.SampleFunction2
5、事件处理 。这是两种语言最大的差别之一 , VB传承以前版本强大的事件处理机制,许多语法都比C#更加灵活 。好在无论什么情况,他们之间都是可以互相移植的 。
对于事件定义,两种语言都是一个委派类型加一个事件属性 , 如:
[C#]
public delegate void MyEventHandler(Object sender,EventArgs e);
public event MyEventHandler MyEvent;
[Visual Basic]
Public Delegate Sub MyEventHandler(ByVal sender As Object,ByVal eAs EventArgs)
Public Event MyEvent As MyEventHandler

推荐阅读