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

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

本主题列出用一个语言关键字即可概述的一般性编程任务。
 
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
声明变量 keywords="vastmDim" />Private、Public、Friend、Protected、Static1、Shared、Dimpublic, private, protected

static, final, volatile, transient

keywords="_clang_Declarators_and_Variable_Declarations" />声明符(概念,不是关键字)声明符(关键字包括用户定义的类型和内置类型) keywords="jsstmvar" />var[隐式声明];或
PUBLICLOCALPRIVATE
声明已命名的常量 keywords="vastmConst" />Constfinal keywords="_langref_const" />const keywords="vclrfConstPG" />const

keywords="vclrfReadonlyPG" />readonly

keywords="jsstmconst" />const NEW #DEFINE
创建新对象 keywords="vakeyNew" />New
 
new keywords="_pluslang_new_Operator" />new keywords="vclrfNewOpPG" />new keywords="jsoprnew" />newn/a
  keywords="vafctCreateObject" />CreateObject()n/a keywords="vclrfCComPtrBaseCoCreateInstance" />CoCreateInstance()(用于 COM 对象) new ActiveXObject()CREATEOBJECT; NEWOBJECT
将对象赋值给对象变量 keywords="vaoprAssign" />= === keywords="jsoprAssign" />==;或 STORE
函数/方法不返回值 keywords="vastmSub" />Sub2void keywords="_langref_void" />void keywords="vcgrfVoid" />voidvoidVoid(仅用于 COM 服务器)
重载函数或方法(Visual Basic:重载过程或方法) keywords="vakeyOverloads" />Overloads NEW (达到此目的时不需要任何语言关键字)(达到此目的时不需要任何语言关键字)(达到此目的时不需要任何语言关键字)(达到此目的时不需要任何语言关键字)(达到此目的时不需要任何语言关键字)
引用当前对象 keywords="vakeyMe" />Me3this keywords="_pluslang_The_this_Pointer" />this keywords="vclrfThisPG" />this keywords="jsstmthis" />thisThis;

Thisform

对当前对象的虚拟方法进行非虚拟调用 keywords="vakeyMyClass" />MyClassn/aMyClass:Func1(),其中 MyClass 是包含成员函数 Func1 的 C++ 类。n/an/an/a
从字符串中检索字符 keywords="valrfGetCharFunction" />GetChar 函数 NEW ""*(p + 10) 或 p[10],其中 p 为 char*[]str[10],此处的 str 是一个字符串, keywords="jsmthcharat" />charAt, keywords="jsmthsubstring" />substring, keywords="jsmthsubstr" />substr4SUBSTR( )
声明复合数据类型(Visual Basic:结构) keywords="vastmStructure" />Structure <members> End Structureclass, interface keywords="vcsmpClass" />class, keywords="vcsmpStruct" />struct, keywords="_pluslang_Unions" />union

keywords="vcrefInterface" />__interface

keywords="vcrefStructTypes" />struct, keywords="vcrefTheClassType" />class, keywords="vcrefTheInterfaceType" />interface keywords="jsstmClass" />class, keywords="jsstmInterface" />interface NEW n/a
初始化对象(构造函数) keywords="vaconUsingConstructorsDestructors" />Sub New()5构造函数(概念,不是关键字) keywords="_pluslang_Constructors" />构造函数(概念,不是关键字)构造函数或系统默认类型构造函数 keywords="jsconCreatingOwnObjects" />构造函数(概念,不是关键字)6Init 事件
直接终止对象n/an/a~ClassNamen/an/an/a
紧接在垃圾回收回收对象之前系统所调用的方法7 keywords="vaconFinalizeDestructors" />Finalize NEW (在 Visual Basic 6.0 中为 Class_Terminatefinally析构函数析构函数n/aDestroy 事件
在声明变量处对其进行初始化 keywords="vastmDim" />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();

keywords="jsstmvar" />var x = 5

keywords="jsstmvar" />var y : car = new car()

n/a
获取函数的地址 keywords="vaoprAddressOf" />AddressOf(对于类成员,此运算符以委托实例的形式返回对函数的引用)delegatemulticast/** @delgate */ keywords="vclrf__delegate" />__delegate keywords="vcrefTheDelegateType" />delegate使用不带括号的函数名称n/a
回调n/a将一个函数的地址传递给另外一个回调调用器的函数。有关示例,请参见 keywords="cpconUsingCallbackFunctions" />使用回调函数。CALLBACK(标准类型);
callback(IDL 属性)
n/an/an/a
声明对象可以被异步修改n/avolatile keywords="_langref_volatile" />volatile keywords="vclrfVolatile" />volatilen/an/a
强制显式声明变量 keywords="vastmOptionExplicit" />Option Explicit无法使用。所有变量在使用前必须先声明。无法使用。所有变量在使用前必须先声明。无法使用。(所有变量必须先声明才能使用)快速模式(默认情况下打开)_VFP.LanguageOptions NEW 
测试不引用对象的对象变量 keywords="vaconObjVarAssign" />obj = NothingpObj == nullpobj == NULLobj == nullobj == undefined

obj == null

EMPTY();ISNULL()
不引用对象的对象变量的值 keywords="vakeyNothing" />Nothingnulln/a keywords="vclrfNull" />nullnull

undefined

n/a
测试数据库空表达式 keywords="vafctIsNull" />IsDbNull受 keywords="frlrfSystemDataSqlTypes" />System.Data.SqlTypes 命名空间中的各种数据类型的支持n/an/ax == nullISNULL( )
测试 Variant 变量是否已被初始化n/an/an/an/ax == undefinedEMPTY( )
定义默认属性 keywords="vakeyDefault" />Default NEW ""n/a keywords="vcerrUsingIndexers" />通过使用索引器n/an/a
面向对象的编程
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
引用基类 keywords="vakeyMyBase" />MyBase NEW super keywords="vcrefDefault" />__super keywords="vclrfBasePG" />base keywords="jsstmSuper" />super NEW BaseClass 属性;ParentClass 属性;DODEFAULT()
声明接口 keywords="vastmInterface" />Interface NEW interface keywords="vcrefInterface" />__interface keywords="vcrefTheInterfaceType" />interface keywords="jsstmInterface" />interface NEW DEFINE CLASS
指定要实现的接口 keywords="vastmImplements" />Implements(语句)implements(类声明上的子句)(仅从接口派生)

class C1 : public I1

class C1 : I1 keywords="jsstmClass" />implements NEW IMPLEMENTS NEW 
声明类 keywords="vastmClass" />Class NEW <实现>
 
class keywords="vcsmpClass" />class keywords="vcrefTheClassType" />class keywords="jsstmClass" />class NEW DEFINE CLASS Myclass AS <基类>
指定一个类只能被继承。不能创建该类的实例。 keywords="vakeyMustInherit" />MustInherit NEW abstract keywords="vclrf__abstract" />__abstract8(仅用在 C++ 的托管扩展中) keywords="vclrfAbstract" />abstract keywords="jsrefAbstractAttribute" />abstract NEW n/a
指定一个类不能被继承。 keywords="vakeyNotInheritable" />NotInheritable NEW final keywords="vchowFinal" />__sealed(仅用在 C++ 的托管扩展中) keywords="vclrfSealed" />sealed keywords="jsrefFinalAttribute" />final NEW n/a
声明一个枚举类型 keywords="vastmEnum" />Enum <members> End Enumn/a keywords="_pluslang_C.2b2b_.Enumeration_Declarations" />enum keywords="vcrefTheEnumerationTypes" />enum keywords="jsstmenum" />enum NEW n/a
声明一个类常数 keywords="vastmConst" />Conststatic final(应用于字段声明) keywords="_langref_const" />const keywords="vclrfConstPG" />const(应用于字段声明) keywords="jsstmconst" />const NEW #DEFINE
从基类派生一个类 keywords="vastmInherits" />Inherits C2 NEW class C1 extends C2Class C1 : public Base(达到此目的不需要任何语言关键字)class C1 : C2 keywords="jsstmClass" />class c1 extends c2 NEW DEFINE CLASS MyClass AS ParentClass
重写方法 keywords="vakeyOverrides" />Overrides NEW (达到此目的时不需要任何语言关键字)(达到此目的时不需要任何语言关键字) keywords="vclrfOverridePG" />override(达到此目的时不需要任何语言关键字)(达到此目的时不需要任何语言关键字)
声明一个必须在派生类中实现的方法 keywords="vakeyMustOverride" />MustOverride NEW abstract= 0 置于声明结尾(纯虚拟方法) keywords="vclrfAbstract" />abstract keywords="jsrefAbstractAttribute" />abstract NEW (达到此目的时不需要任何语言关键字)
声明一个不能重写的方法 keywords="vakeyNotOverridable" />NotOverridable NEW (默认情况下方法是不能重写的。)final keywords="vchowFinal" />__sealed(仅用在 C++ 的托管扩展中) keywords="vclrfcsharpspec_10_5_5" />sealed keywords="jsrefFinalAttribute" />final NEW n/a
声明一个虚拟方法、属性 (Visual Basic) 或属性访问器(C#、C++) keywords="vakeyOverridable" />Overridable(默认情况下,方法为虚拟) keywords="_langref_virtual" />virtual keywords="vclrfVirtualPG" />virtual(默认情况下,方法为虚拟)n/a
在派生类中隐藏基类成员 keywords="vakeyShadows" />Shadowingn/an/an/a keywords="vclrfNewOpPG" />new Modifiern/a
声明一个对类方法的类型安全的引用 keywords="vastmDelegate" />Delegate NEW delegatemulticast/** @delgate */ keywords="vclrf__delegate" />__delegate(仅用在 C++ 的托管扩展中) keywords="vcrefTheDelegateType" />delegate使用不带括号的函数名称n/a
指定变量可以包含一个要处理其事件的对象 keywords="vakeyWithEvents" />WithEventsn/an/a(编写代码 - 没有特定的关键字)(编写代码 - 没有特定的关键字)EVENTHANDLER( )  NEW 
指定要为其调用事件过程的事件 keywords="vakeyHandles" />Handles NEW (事件过程仍然可以通过命名模式与一个 WithEvents 变量相关联。)n/an/an/an/an/a
一次性评定对象表达式的值以访问其多个成员 keywords="vastmWith" />With objExpr <.member> <.member> End Withn/an/an/a keywords="jsstmwith" />with9WITH ... ENDWITH
异常处理
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
结构化异常处理 keywords="vastmTryCatchFinally" />Try NEW <attempt>
Catch
<handle errors>
Finally
<always execute>
End Try
try, catch, finally, throw keywords="_langref_try_except_Statement" />__try, __except, keywords="_langref_try_finally_Statement" />__finally keywords="vclrfUsingCatchFinallyTogether_PG" />try, catch, finally,
keywords="vclrfTheThrowStatement" />throw
keywords="jsstmtrycatch" />try, catch, finally, keywords="jsstmThrow" />throwONERROR( )、COMRETURNERROR( )、ERROR();MESSAGE()、AERROR()
C++ 异常处理n/an/a keywords="_pluslang_The_try.2c_.catch.2c_.and_throw_Statements" />try, catch, thrown/an/an/a
决策结构
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
决策结构(选择) keywords="vaconUsingSelectCase" />Select Case ..., Case, Case Else, End Selectswitch、case、break、default keywords="_pluslang_The_C.2b2b_.switch_Statement" />switch, case, default, keywords="_pluslang_The_goto_Statement" />goto, keywords="_pluslang_The_C.2b2b_.break_Statement" />break keywords="vclrfTheSwitchStatement" />switch, case, default, goto, break keywords="jsstmswitch" />switch, case, keywords="jsstmbreak" />breakCASE
决策结构 (if ... then) keywords="vaconUsingIfThen" />If ...Then, ElseIf ...Then, Else, End Ifif、else keywords="_pluslang_The_C.2b2b_.if_Statement" />if, else keywords="vclrfTheIfStatement" />if, else keywords="jsstmif" />if, elseIF ...ENDIF
循环结构(有条件的) keywords="vaconUsingDoLoop" />While, Do [While, Until] ..., Loop [While, Until]do、while、continue keywords="_pluslang_The_do_Statement" />do, while, keywords="_pluslang_The_C.2b2b_.continue_Statement" />continue keywords="vclrfTheDoStatement" />do, keywords="vclrfTheWhileStatementX" />while, keywords="vclrfTheContinueStatement" />continue keywords="jsconUsingwhileLoops" />do, while, keywords="jsconUsingbreakandcontinueStatements" />break, continueDO, WHILE(子句)
循环结构(迭代) keywords="vaconUsingForNext" />For ..., [Exit For,] Next

keywords="vaconUsingForEach" />For Each ..., [Exit For,] Next

for, break keywords="_pluslang_The_C.2b2b_.for_Statement" />for keywords="vclrfTheForStatement" />for, keywords="vclrfTheForeachStatement" />foreach keywords="jsconUsingforLoops" />for (x=0;x<10;x++){...}

keywords="jsconUsingforinLoops" />for (prop in obj) { print (obj[prop]);}

FOR(子句),FOR ... ENDFOR, Continue, Next
数组
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
声明一个数组 keywords="vaconDeclaringArrays" />Dim a() As Longint[] x = new int[5]; keywords="_pluslang_Array" />int x[5]; keywords="vclrfArraysPG" />int[] x = new int[5]; keywords="jsconDeclaringArrays" />var x : int[], keywords="jsconDeclaringArrays" />var arr = Array()DIMENSIONDECLARE
初始化一个数组 keywords="vaconUsingArrays" />Dim a() As Long = {3, 4, 5}int[] x = {1,2,3,4,5}; keywords="_pluslang_Initializing_Arrays" />int x[5]= {1,2,3,4,5}; keywords="conArrays" />int[] x = new int[5] {1, 2, 3, 4, 5}; keywords="jsconDeclaringArrays" />var x : int[] = [1, 2, 3, 4, 5], keywords="jsconDeclaringArrays" />var arr = new Array(1, 2, 3, 4, 5)DIMENSIONDECLARE
重新分配数组 keywords="vastmReDim" />Redimn/an/an/a keywords="jsprolengtharray" />arr.length=newSize(仅用于 JScript 数组)10DIMENSIONDECLARE
类范围
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
在项目或程序集外可见 keywords="vastmDim" />Publicpublic keywords="_langref_public" />public keywords="vclrfPublicPG" />public keywords="jsrefPublicAttribure" />public NEW PUBLIC
在程序集 (C#/Visual Basic) 外或包(Visual J#、JScript)内不可见 keywords="vastmDim" />Friend(省略范围关键字将指定“包范围”) keywords="_langref_private" />private keywords="vclrfInternalPG" />internal keywords="jsrefInternalAttribute" />internal NEW n/a
仅在项目内可见(对于嵌套的类,在包含类内可见) keywords="vastmDim" />Privateprivate keywords="_langref_private" />private keywords="vclrfPrivatePG" />private keywords="jsrefPrivateAttribute" />private NEW HIDDEN
成员范围
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
在类和项目 (Visual J#/JScript/C++/Visual Basic) 或模块 (Visual Basic) 外可访问 keywords="vastmDim" />Publicpublic keywords="_langref_public" />public keywords="vclrfPublicPG" />public keywords="jsrefPublicAttribure" />public NEW PUBLIC
在类外可访问,但在项目内(C#、Visual Basic、C++)或包(Visual J#、JScript)内不可访问 keywords="vastmDim" />Friend(省略范围关键字将指定“包范围”)public private: keywords="vclrfInternalPG" />internal keywords="jsrefInternalAttribute" />internal NEW n/a
仅在类 (Visual J#/JScript/C++/Visual Basic) 或模块 (Visual Basic) 内可访问 keywords="vastmDim" />Privateprivate keywords="_langref_private" />private keywords="vclrfPrivatePG" />private keywords="jsrefPrivateAttribute" />private NEW HIDDEN
仅能被当前类和派生类访问 keywords="vastmDim" />Protected NEW protected keywords="_langref_protected" />protected keywords="vclrfProtectedPG" />protected keywords="jsrefProtectedAttribute" />protected NEW PROTECTED
指定一个函数或另一个类可以访问声明类的私有成员n/an/a keywords="_pluslang_Friends" />friend(在 C++ 的托管扩展中不允许)n/an/an/a
在程序集内受保护,对其他程序集来说是私有的n/an/aprotected private:
(仅用于 C++ 的托管扩展)
n/an/an/a
杂项生存期
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
保留过程的局部变量 keywords="vastmDim" />Static11static keywords="_pluslang_Static" />staticn/an/aPRIVATE
由一个类的所有实例共享 keywords="vastmDim" />Shared NEW static keywords="_pluslang_Static" />static keywords="vclrfStaticPG" />static keywords="jsrefStaticAttribute" />static NEW n/a
杂项
目的Visual BasicVisual J#C++C# NEW JScriptVisual FoxPro
注释代码 keywords="vaconCommentsInCode" />'

keywords="vastmRem" />Rem

//

/**

*/

/*

*/

keywords="_pluslang_C.2b2b_.Comments" />//、/* */ 用于多行注释 keywords="vclrfYourFirstCSharpProgram_PG" />//、/* */ 用于多行注释

/// 用于 XML 注释

keywords="jsconComments" />//、/* */ 用于多行注释*; &&
区分大小写?
调用 Windows API keywords="vastmDeclare" />Declare <API>使用 J/Direct 或平台调用n/a keywords="vcwlkPlatformInvokeTutorial" />使用平台调用n/aDECLARE - DLL
声明并引发一个事件 keywords="vastmEvent" />Event, keywords="vastmRaiseEvent" />RaiseEvent使用 java.awt.Event 类或 /** @event */n/a keywords="vclrfEventPG" />eventn/an/a
线程基元 keywords="vastmSyncLock" />SyncLocksynchronized  keywords="vclrfLockStatement" />lockn/an/a
转到 keywords="vastmGoto" />Goton/a keywords="_pluslang_The_goto_Statement" />goto keywords="vclrfTheGotoStatement" />goton/an/a

1. Static 可由其本身使用以声明变量的唯一一种情况(例如,Static x As Long)是在过程中。

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

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

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

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

6. JScript 中不允许对构造函数进行重载。

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

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

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

10. 不重新分配数组,也不会使其“增长”。JScript 数组(声明为 Array 类型)总是稀疏的动态数组。本机数组(声明为 System.Array 或 type[])不是动态数组。

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

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值