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在預處理後停止編譯 彙編和鏈結操作。編譯 將預處理後的 翻譯成組合語言。會先分析後綜合,分析就是進行詞法 語法 語義分析和...