學習完了
c#後,有種眩暈的感覺。然後回過頭來看了看筆記,又想了想
vb,兩者的相同之處還是挺多的。然後 就小結一下,以梳理我這混亂的思路。
第一:資料型別
通過圖可以看出來,c#資料型別分為兩大類,乙個是值型別,另一就是引用型別。
1.值型別
:一種由型別的實際值表示的資料型別。如果向乙個變數分配值型別,則該變數將
被賦以全
新的值副本。當定義乙個值型別的變數時,c#會根據所宣告的型別,以棧
方式分配一塊大小相適應
的儲存區域給這個變數,隨後對這個變數進行讀和寫操作。
例如:下面的例子,首先先在堆疊中分配乙個32位的儲存區域給變數num,並且將5放入這
個記憶體區域中,隨後,從變數num中取出值,加上10,再將計算結果賦給sum。
int num=5
sum=num+10
2.引用型別:
引用型別跟值型別不同,值型別儲存的是乙個實際資料的量,引用型別儲存的
是位址而不是值。因為引用型別儲存的時物件的位址,不是值,所以不同可以儲存相
同的位址,而且乙個變數的改變不會影響另乙個的值。
建立引用型別一般包括這兩步:首先,在堆疊上建立乙個引用變數;然後,在堆上建立對
象本身,再把這個記憶體的首位址賦給引用變數。
string a,b;
a=「hello world」;
a=b;
在這裡string是乙個引用型別,a,b分別是指向字串的引用變數。a是字串「hello world」存放在
記憶體中的乙個位址。兩個引用型變數(a,b)之間的賦值,使得他們兩個都是對"abcd"
的引用同時一 個變
量的改變不會影響另乙個變數的改變。
注意堆和棧的區別:
棧它用於儲存固定長度的資料,同時要遵循「先進後出」的原則,每個程式在執行時都有自己的堆疊,其他程式不能訪問該堆疊。
堆是由new分配的記憶體,一般速度比較慢,而且容易產生記憶體碎片,但是他可以儲存長度變化的資料,存按任意順序和大小進行分配和釋放記憶體,用起來是最方便的
但是vb同
c#比起來,資料型別的分類與應用就沒有這沒麻煩。就簡簡單單的幾種型別:數值型,字串型,布林型,日期型。每一種型別的資料占用一定數量的儲存空間,表示的值也有一定的範圍。
二.常量與變數
常量:
c#:
常量:顧名思義就是在程式執行中其值不改變的量。
常量的資料型別:long,bool,char,string等
常量分類:直接常量(直接使用的資料常量)
符號常量:(直接用乙個自定義的符號名來代替資料常量)
固有常量:.net提供的常量,如:color.
命名常量用關鍵字const宣告和初始化.命名規則
[修飾符] const 資料型別 常量名=常量表示式
修飾符:public ,private
vb:vb中常見的常量有整型常量,長整型常量,單精度型常量,雙精度型常量,貨幣型常
量,位元組型常量,字串型常量和日期型常量
常量命名規則:
[private/public] const《常量名》[as 資料型別]=表示式 例:
pulic const conpi as single=3.1415 『宣告單精度型符號
通過兩種不同語言,對常量的宣告來看,還是大同小異,宣告的方式基本類似,但是 應該
能看出c#的**量要比vb的少。 變數
:
相同之處:
命名規則
1.不能包含特殊字元
2.不能有語言中的關鍵字
3.一條變數宣告中,可宣告多個相同型別的變數.
4.在同一作用域中,變數名不能重複
但是他們在細微之處還是有不同點的。c#在命名的時候,變數名必須以字母,或者下劃
為開頭,但是vb的變數名是必須以字母或者漢字開頭。
作用:命名空間級,類級,區域性,塊級
c#:區域性變數:宣告位置在窗體或類所包含的方法內位置宣告,只能該方法內使用,
使 用修 飾符:public,private,static
塊級變數:宣告位置在語句塊(大括號範圍內),只能由該語句塊內使用。不能使
用 publicprivate static
類級變數:宣告位置在窗體或者類的頂部宣告。用修飾符public,private宣告,在該 體
或其他類的方法使用。
靜態變數:使用關鍵字static宣告,即使物件被撤銷,靜態變數仍然在記憶體中儲存。
修飾符:
public:都可以訪問
private:私有,只有自己可以訪問
protected:只有繼承關係的可以訪問
vb:
過程級變數(區域性變數),在過程中宣告,並且只能在該過程中宣告。
模組級變數:是指宣告的變數所在的模組中的所有過程可以訪問的變數。但是乙個模
塊中的過程不能訪問其他模組中的模組級變數
應用級變數:又為全域性變數。應用程式中的所有模組對其都可以訪問。
作用域:
過程級變數:dim或static
模組級變數:private或dim
全域性變數:public
通過這些,我們也會看出一點點的不同,在vb中沒有塊級變數,塊級變數是針對c#中乙個語句 塊,比如for迴圈語句塊,在{}中也許就定義這要用到的變數,但是在vb中也許就將其在區域性變數中宣告 了。因為vb中有語句塊,沒有{}以供我們寫不同的語句塊,只有乙個 public sub……..end sub.這其中 寫上對應的過程。其他的區分語句塊就要看我們的書寫格式了。
兩者在一些語法上也有不同之處。
比如:在異常處理的時候兩者存在不同之處:
vb:中常常用onerrorgoto line: 來讓程式出錯時跳到line:這一行。而c#中提供了更多的方法。
c#:為了處理可能的情況,一般把程式的相關部分分為三種不同型別的**塊:
try塊包含的**組成了程式的正常操作部分
catch塊包含的**處理各種錯誤
finally塊包含的**清理資源或執行要在try塊末尾執行的其它操作。
對比的學習,也是對以前知識的乙個回顧,學習就是溫故而知新!
Python與C語言的基礎比較
1 注釋 python 單行注釋以 開頭 多行注釋以可以使用多個 還可以使用 或 c語言 單行注釋以 開頭 多行注釋以可以使用多個 還可以使用 2 變數型別 python六個標準的資料型別 number數字 string字串 list列表 tuple元祖 sets集合 dictionary字典 數字...
VB中類模組實現與C 中類實現的比較 1
vb6.0從本質上說不是一種純物件導向的語言,而是一種基於物件的語言.換句話就是物件導向的簡化,去除了一些對於初學者可能理解比較困難的物件導向的語言元素 例如繼承,過載.使原來習慣使用面向過程語言程式設計的程式設計師開發起來更加得心應手.但正是由於對basic的使用慣性,導致在用vb6.0開發軟體時...
C 與VB 異同(二)
1.運算子 2.賦值表示式 1 語法格式 表達 c 與vb 類同 2 說說c 中 左值 和 右值 的區別 左值 l value 是指 具有與其對應的儲存空間 可以由使用者改變其值。常量屬於右值 變數屬於左值。3 賦值運算子左邊的運算元必須是乙個左值。當乙個變數既出現在賦值運算子左邊,又出現在其右邊時...