不同语言中的关键字的比较

Visual Studio 
不同语言中的关键字的比较 

 

本主题列出用一个语言关键字即可概述的一般性编程任务。有关需要代码示例的任务的更多信息,请参见使用代码示例比较不同语言中的编程概念

 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

声明变量

Dim 语句 (Visual Basic)

Public (Visual Basic)

Friend (Visual Basic)

Protected (Visual Basic)

Private (Visual Basic)

Shared (Visual Basic)

Static (Visual Basic) 1

public

protected

private

static

final

volatile

transient

声明符(概念,不是关键字)

声明符(关键字包括用户定义的类型和内置类型)

var

[隐式声明]

PUBLIC

LOCAL

PRIVATE

声明已命名的常数

Const

final

const

const

readonly

const

#DEFINE

创建类的一个新实例

New

new

new

gcnew

new

new

NEWOBJECT( ) 函数

创建新对象

CreateObject()

new

CoCreateInstance()(用于 COM 对象)

new

新的 ActiveXObject()

CREATEOBJECT( ) 函数

将对象赋值给对象变量

=

=

=

=

=

=

STORE

函数/方法不返回值

Sub 2

void

void

void

void

Void(仅用于 COM 服务器)

重载函数或方法(Visual Basic:重载过程或方法)

Overloads NEW 

(为达此目的不需要任何语言关键字)

(为达此目的不需要任何语言关键字)

(为达此目的不需要任何语言关键字)

(为达此目的不需要任何语言关键字)

(为达此目的不需要任何语言关键字)

引用当前对象

Me 3

this

this

this

this

this

thisform

对当前对象的虚方法进行非虚拟调用

MyClass

n/a

MyClass::Func1(),其中 MyClass 是包含成员函数 Func1 的 C++ 类。

n/a

n/a

n/a

从字符串中检索字符

GetChar 函数

str[10],其中 str 为字符串

string

*(p + 10)p[10],其中 p 为 char* 或 wchar_t*

str[10],其中 str 为字符串

string

str[10],其中 strstring

charAt

substring

substr

SUBSTR( )

声明一个复合数据类型(结构)

Structure

class, interface

class

struct

union

__interface

struct

class

interface

class, interface

n/a

初始化对象(构造函数)

Sub New() 5

构造函数(概念,不是关键字)

构造函数(概念,不是关键字)

构造函数或系统默认类型构造函数

类构造函数

构造函数(概念,不是关键字)6

Init 事件

直接终止对象

n/a

n/a

~ ClassName

n/a

n/a

n/a

紧接在垃圾回收回收对象之前系统所调用的方法7

Finalize(在 Visual Basic 6.0 中为 Class_Terminate

finally

析构函数

析构函数

n/a

Destroy 事件

在声明变量处对其进行初始化

Dim x As Long = 5

Dim c As New Car(FuelTypeEnum.Gas)

int x = 5;

// 或由构造函数进行初始化:

C c(10);

int x=5;

// 初始化为值:

int x = 123;

// 或使用默认构造函数:

int x = new int();

var x = 5

var y : car = new car()

LOCAL x

x = 5

获取函数的地址

AddressOf(对于类成员,此运算符以委托实例的形式返回对函数的引用)

delegate

multicast

/** @delgate */

delegate

delegate

使用不带括号的函数名称

n/a

回调

n/a

将一个函数的地址传递给另外一个回调调用器的函数。有关示例,请参见使用回调函数

CALLBACK(标准类型)

callback(IDL 属性)

delegate

n/a

n/a

声明对象可以被异步修改

n/a

volatile

volatile

volatile

n/a

n/a

强制显式声明变量

Option Explicit

n/a(所有变量必须先声明才能使用)

n/a(所有变量必须先声明才能使用)

n/a(所有变量必须先声明才能使用)

快速模式(默认情况下打开)

_VFP.LanguageOptions NEW 

测试不引用对象的对象变量

obj = Nothing

pObj == null

pobj == NULL

obj == null

obj == undefined

obj == null

VARTYPE(obj)=="0"

不引用对象的对象变量的值

Nothing

null

nullptr

null

null

undefined

.F.

测试数据库空表达式

IsDbNull

System.Data.SqlTypes 命名空间中的各种数据类型的支持

n/a

n/a

x == null

ISNULL( )

测试 Variant 变量是否已被初始化

n/a

n/a

n/a

n/a

x == undefined

EMPTY( )

定义默认属性

Default

n/a

property

索引器

n/a

n/a

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl62c8d9d68,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl62img,"; </script> 面向对象的编程
 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

引用基类

MyBase

super

__super

base

super

BaseClass 属性

ParentClass 属性

DODEFAULT()

Class::member

声明接口

Interface

interface

__interface

interface class

interface

interface

DEFINE CLASS

指定要实现的接口

Implements(语句)

implements(类声明上的子句)

(仅从接口派生)

class C1 : public I1

class C1 : I1

接口

IMPLEMENTS

IMPLEMENTS NEW 

声明类

Class

class

class

Classes and Structs (Managed)

class

class

DEFINE CLASS MyClass AS <ParentClass>

声明模块

Module 语句

n/a

static class

static class

n/a

n/a

声明类或结构的分部定义

分部 (Visual Basic)

n/a

n/a

Partial

n/a

n/a

指定一个类只能被继承。不能创建该类的实例

MustInherit

abstract

abstract (C++)

abstract

abstract

n/a

指定一个类不能被继承。

NotInheritable

final

sealed

sealed

final

n/a

声明一个枚举类型

Enum <members> End Enum

n/a

enum

enum

enum

n/a

声明一个类常数

Const

static final(应用于字段声明)

const

const(应用于字段声明)

const

#DEFINE

从基类派生一个类

Inherits C2

class C1 extends C2

Class C1 : public Base(为达此目的不需要任何语言关键字)

class C1 : C2

class

Class c1 extends c2

DEFINE CLASS MyClass AS ParentClass

重写方法或属性

Overrides

(为达此目的不需要任何语言关键字)

(除了进行 /clr 编译需要 override 外,为达此目的不需要任何语言关键字,请参见 Derived Classes

override

(为达此目的不需要任何语言关键字)

(为达此目的不需要任何语言关键字)

声明一个必须在派生类中实现的方法

MustOverride

abstract

= 0 置于声明结尾处(纯虚方法)

abstract

abstract

(为达此目的不需要任何语言关键字)

声明一个不能重写的方法

NotOverridable(默认为 NotOverridable 的方法。)

final

sealed

sealed

final

n/a

声明虚方法或属性,或属性访问器

Overridable

(默认情况下,方法为虚拟)

virtual

virtual

(默认情况下,方法为虚拟)

n/a

在派生类中隐藏基类成员

隐藏

n/a

new (new slot in vtable)

new(C# 参考)

new 修饰符

n/a

声明一个对类方法的类型安全的引用

Delegate

delegate

multicast

/** @delgate */

delegate

delegate

使用不带括号的函数名称

n/a

指定变量可以包含一个要处理其事件的对象

WithEvents

n/a

n/a

(编写代码 - 没有特定的关键字)

(编写代码 - 没有特定的关键字)

EVENTHANDLER( ) NEW 

指定要为其调用事件过程的事件

Handles(仍可通过命名模式将事件过程与 WithEvents 变量关联起来)

n/a

n/a

event += eventHandler;

n/a

BINDEVENTS( )

一次性评定对象表达式的值以访问其多个成员

With objExpr <.member><.member> End With

n/a

n/a

using 语句(C# 参考)

with

WITH ... ENDWITH

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl115f2c482b,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl115img,"; </script> 异常处理
 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

结构化异常处理

Try <attempt>

Catch

<handle errors>

Finally

<always execute>

End Try

Throw

try

catch

finally

throw

__try、__except

__finally

try、catch、finally

throw

try

catch

finally

throw

TRY

   [ tryCommands ]

[ CATCH [ To VarName ] [ WHEN IExpression ] ]

   [ catchCommands ] ]

[ THROW [ eUserExpression ] ]

[ EXIT ]

[ FINALLY

   [ finallyCommands ] ]

ENDTRY

C++ 异常处理

n/a

n/a

try、catch、throw

n/a

n/a

n/a

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl122932b3fd,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl122img,"; </script> 决策结构
 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

决策结构(选择)

Select Case ...、Case、Case Else、End Select

switch

case

break

default

switch、case、default

goto

break

switch

case

default

goto

break

switch

case

break

CASE

ICASE

决策结构 (if ... then)

If ...Then, ElseIf ...Then、Else、End If

if

else

if、else

if、else

if

else

IF ... ENDIF

IIF( )

循环结构(有条件的)

While、Do [While, Until] ...、Loop [While, Until]

do

while

continue

do、while

continue

do

while

continue

do、while

break、continue

DOWHILE(子句)

循环结构(迭代)

For ...、[Exit For]、Next

For Each ...、[Exit For]、Next

for

break

for

for

foreach

for (x=0;x<10;x++){...}

for (prop in obj) { print (obj[prop]);}

FOR(子句)

FOR ... ENDFOR

Continue

NEXT

FOR EACH(子句)、FOR ... ENDFORContinueNext

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl1407c57318,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl140img,"; </script> 数组
 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

声明一个数组

Dim a() As Long

int[] x = new int[5];

int x[5];

int[] x = new int[5];

var x : int[]

var arr = Array()

DIMENSION

DECLARE

初始化一个数组

Dim a() As Long = {3, 4, 5}

int[] x = {1,2,3,4,5};

int x[5]= {1,2,3,4,5};

int[] x = new int[5] {1, 2, 3, 4, 5};

var x : int[] = [1, 2, 3, 4, 5]

var arr = new Array(1, 2, 3, 4, 5)]

x[1] = 1

x[2] = 2

重新分配数组

Redim

n/a

n/a

n/a

arr.length=newSize(仅用于 JScript 数组)10

DIMENSION

DECLARE

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl147f7dc01c,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl147img,"; </script> 类范围
 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

在项目或程序集外可见

Public

public

public

public

public

n/a

在程序集外或包内不可见

Friend

(省略范围关键字将指定“包范围”)

private

internal

internal

n/a

仅在当前类或派生类中可见

Protected (Visual Basic)

n/a

n/a

Protected

n/a

n/a

访问仅限于从包含类派生的当前程序集或类型。

Protected Friend

n/a

Type and Member Visibility

protected internal

可访问性级别

n/a

n/a

仅在项目内可见(对于嵌套的类,在包含类内可见)

Private

private

private

private

private

n/a

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl1619e12b88,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl161img,"; </script> 成员范围
 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

可在类、项目和模块外访问

Public

public

public

public

public

(为达此目的不需要任何语言关键字)

可在类外、但在项目或包内访问

Friend

(省略范围关键字将指定“包范围”)

public private:

internal

internal

n/a

仅能由当前类和派生类访问

Protected

protected

protected

protected

protected

PROTECTED

仅可在类或模块内访问

Private

private

private

private

private

HIDDEN

指定一个函数或另一个类可以访问声明类的私有成员

n/a

n/a

friend(C++ 中不允许)

friend

n/a

n/a

在程序集内受保护,对其他程序集来说是私有的

n/a

n/a

protected private

n/a

n/a

n/a

访问仅限于从包含类派生的当前程序集或类型

Protected Friend

n/a

Type and Member Visibility

protected internal

可访问性级别

n/a

n/a

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl176c6aff7d,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl176img,"; </script> 杂项生存期
 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

保留过程的局部变量

Static 11

static

static

static(C# 参考)

n/a

n/a

由一个类的所有实例共享

Shared

static

static

static

static

n/a

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl18308dd8a6,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl183img,"; </script> 杂项
 
用途 Visual Basic Visual J# C++ C# JScript Visual FoxPro

注释代码

'

Rem

//

/**

*/

/*

*/

//、/* */ 用于多行注释

//、/* */ 用于多行注释

/// 用于 XML 注释

//、/* */ 用于多行注释

*

&&

NOTE

区分大小写?

调用 Windows API

Declare <API>

使用 J/Direct 或平台调用

n/a

使用平台调用

n/a

DECLARE - DLL

声明并引发一个事件

Event

RaiseEvent

使用 java.awt.Event

/** @event */

n/a

event

n/a

RAISEEVENT( ) 函数

线程基元

SyncLock

synchronized

n/a

lock

n/a

n/a

转到(分支)

Goto

n/a

goto

goto

n/a

n/a

1 在 Visual Basic 中,可以单独使用 Static 声明变量(例如,Static x As Long)的唯一位置是在过程之内。

2 在 Visual Basic 中,使用 Sub 关键字声明的过程不能返回值。如果一个过程需要返回值,则必须使用 Function 关键字声明它。

3 在 Visual Basic 中,在编译时不解析 Me,因此可以将它用作属性或方法的返回值。

4 在 JScript 中仍然支持 substr 函数,但它已不再是访问字符串中字符的首选方式。从字符串中的特定位置访问某个字符最有效方法是使用括号。例如,若要访问字符串 str 中的第十个字符,请使用 str[10]

5 在 Visual Basic 中,从 .NET FrameworkSystem.Object 派生的类的构造函数始终被命名为 New

6 在 JScript 中,不允许对构造函数进行重写。

7 通常,此方法中的代码释放不能由垃圾回收器自动释放的系统资源。

8 在 C++ 中,一个抽象类至少包含一个纯虚拟成员。

9 在 JScript 中,没有像在 Visual Basic 中使用的前导句点。这个特点容易造成混淆,原因是变量可能会被误认为属性,反之亦然。还应注意 with 语句会产生效率低下的代码。

10 在 JScript 中,这不会重新分配数组,也不会扩大数组。JScript 数组(声明为 Array 类型)总是稀疏的动态数组。本机数组(声明为 System.Arraytype[])不是动态数组。

11 在 Visual Basic 中,非共享类方法的静态局部变量是按照类实例存储的,而不是像其他语言那样共享一个副本。如果使用 Static 声明一个变量,当变量失去并重新获得作用域时,该变量的值仍会保留。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值