C vs VB7之語法與程式設計

2022-03-09 14:39:22 字數 3906 閱讀 4067

c#與vb7是微軟.net的主要程式設計工具。本文通過例項比較c#語言與vb7語言及其程式設計,每個程式都先用vb7語言寫出,再用c#語言改寫,從中看出現在的vb7實際就是c#,而將(不同語言的)程式設計統一到.net類函式庫就是微軟.net的精髓。

一、變數宣告

c#與vb7的變數基本上是一致的。與vb6不同,vb7在宣告變數的同時可賦初值,不再用dim x這種沒有確定型別的宣告,vb7的整型(integer)變數是4位元組(32位整數,-2147483648--2147483647),長整型(long)是8位元組(64位整數,-9,223,372,036,854,775,808--9,223,372,036,854,775,807)。

c# vb7

int x;

long y

string s;

string s1, s2;

object o;

object obj = new object();

public string name;

dim x as integer

dim y as long

dim s as string

dim s1, s2 as string

dim obj as new object()

public name as string

下面的vb7與c#程式編譯後執行結果相同:

x=99999999

s= vb7程式設計100例

s1= vb7 programming , s2 ="vb7程式設計

 vb7的例程(01_vb.vb):

imports system

public module ly

public name as string  

sub main()

dim x as integer = 99999999

dim s as string = "vb7程式設計100例"

dim s1, s2 as string  

注釋:一切變數宣告都要有as,不許可如:dim o 的宣告;宣告變數的同時可賦初值

dim obj as new object()  

s1 = "vb7 programming" : s2 ="vb7程式設計"  

console.writeline("x=",x) 注釋:顯示變數x

console.writeline("s=",s) 注釋:顯示變數s

console.writeline("s1=, s2=",s1,s2) 注釋:顯示變數s1,s2

end sub

end module

  c#的例程(01_c#.cs)與vb7例程幾乎完全相同:

using system;

class ly

} 二、net類函式庫的呼叫

c#與vb7都呼叫同乙個.net的類函式庫,因此,c#與vb7程式呼叫.net類函式庫的指令完全一樣。

下面的例子定義了方法input()實現從鍵盤輸入乙個長整數m,方法calcsqrt(mm as long)計算並顯示m的平方根;用到了.net類函式庫中system的控制台類console的輸入輸出方法和數學計算類math的(求平方根)方法sqrt;此外,用了類int64的方法fromstring(cc)將數字字串cc轉為長整數。

程式執行結果(假定輸入為999,注意,數學函式返回值一般是雙精度的)

請鍵入乙個正整數:

計算結果: sqrt(999)=31.606,961,258,558,215

容易看出,這個c#與vb7程式幾乎是完全一樣的,寫出了vb7程式,很容易就可改為c#程式;將(不同語言的)程式設計統一到.net類函式庫,這是微軟.net的精髓。

  vb7的例程(02_vb.vb):

imports system

public module ly

dim m as long 注釋:不區分大小寫,long可寫為long, long或long

dim q as double  

注釋:從鍵盤輸入乙個長整數m

public sub input()

console.write("請鍵入乙個正整數:")

dim cc as string=console.readline() 注釋:得到鍵盤輸入的數字字串

m=int64.fromstring(cc) 注釋:將這個字串轉換為64位整數m

end sub

注釋:計算並顯示mm的平方根

public sub calcsqrt(mm as long)

q=math.sqrt(mm) 注釋:數學函式sqrt在system的類math中,返回double,不可用single

console.write("計算結果:sqrt()=",m,q) 注釋:顯示結果

end sub

sub main()

input

calcsqrt(m)

end sub

end module

  c#的例程(02_c#.cs)與vb7例程幾乎完全相同:

using system;

class ly

//計算並顯示mm的平方根q

public static void calcsqrt(long mm)

static void main()

} 三、物件導向程式設計

上面的例子裡,定義了方法input()實現從鍵盤輸入乙個長整數m,方法calcsqrt(mm as long) 計算並顯示m的平方根,然後在main()方法裡呼叫;下面將方法input()與方法calcsqrt(mm as long)獨立出來放到乙個專門的類(ly0)裡,然後在類ly的main()方法中生成例項物件使用:

程式執行結果仍然是與(二)完全相同。

在物件導向的情況下,這個c#與vb7程式也幾乎是完全一樣的,從這個意義上可以說:vb7就是c#,c#也就是vb7。  

  vb7的例程(03_vb.vb):

imports system

class ly0

注釋:變數m與q現在封裝到類ly0裡被保護,因為另乙個類ly要引用m,對m加public

public dim m as long  

dim q as double  

注釋:從鍵盤輸入乙個長整數m

public sub input()

console.write("請鍵入乙個正整數:")

dim cc as string=console.readline() 注釋:得到鍵盤輸入的數字字串

m=int64.fromstring(cc) 注釋:將這個字串轉換為64位整數m

end sub

注釋:計算並顯示mm的平方根

public sub calcsqrt(mm as long)

q=math.sqrt(mm) 注釋:數學函式sqrt在system的類math中,返回double,不可用single

console.write("計算結果:sqrt()=",m,q) 注釋:顯示結果

end sub

end class

public module ly

sub main()

dim obj as ly0 = new ly0()

obj.input

obj.calcsqrt(obj.m)

end sub

end module

  c#的例程(02_c#.cs)與vb7例程幾乎完全相同:

using system;

class ly0

//計算並顯示mm的平方根q

public void calcsqrt(long mm)

} class ly

}

7 模板與泛型程式設計

understanding implicit inte ces and compile time polymorphism.編譯期多型 模板根據型別例項化 過載函式。執行期多型 執行時決定那個乙個virtual函式被呼叫。understand the two meanings of typename...

C 程式設計 基礎語法02 資料與型別

運算子與表示式 型別 資料型別 只要是資料就有數值與型別 資料必定屬於某一型別,沒有型別的資料是沒有意義的,是不存在的!1 常量是資料 10是資料,10.1是資料,a 是資料,aabb 是資料 2 變數是資料 變數是用來儲存資料的,所以變數當然是資料 3 表示式是資料 表示式是用來運算資料的,所以表...

NDK開發之編譯原理與語法

1.編譯流程 預處理 就是對各種預處理命令的處理,主要是巨集替換 檔案引入 去除空行和注釋等。linux系統中預處理命令 gcc e test.c o test.i。e表示gcc在預處理後停止編譯 彙編和鏈結操作。編譯 將預處理後的 翻譯成組合語言。會先分析後綜合,分析就是進行詞法 語法 語義分析和...