本人覺得C#是世界上最優美的語言,也可以說是一門傻瓜語言,入門成本低,上手快得到許多人的青睞,但是C#並沒有在行業內得到大家的首肯,反倒是C/C++人才比較緊俏;
本人在學習過程中將C#和C++語言使用方面的一些區別列舉一下,方便理解學習和掌握這兩門語言;如有錯誤歡迎糾正:
1、函數返回值類型:
C#里返回值基本上可以使任何類型,C++則不行,C++的函數返回值類型必須是除了函數和數組類型之外的其他任何類型。
2、switch(參數類型):
C#參數類型可以是任何類型,C++則必須是整形。
3、數組:
以定義一個int類型的4行4列的二維數組arr為例:
C#定義數組格式是: int[][] arr = new int[4][4];
C++定義數組的格式是:int arr[4][4];
4、定義一個對象;
C++:兩種用法
- ClassA objA;objA.FieldA=valueA;//對象法
- ClassA * objA=new ClassA();objA->FieldA=valueA;//指針法
C#: ClassA objA=new ClassA();objA.FieldA=valueA;
5、函數參數類型為數組時:
C++:當參數類型為數組時,函數默認當成指針類型來處理,在函數體里改變數組里的值,函數外面也跟着改變;
C# :當參數類型為數組時,函數默認當成引用類型來處理,在函數體里改變數組里的值,函數外面也跟着改變;
6、函數參數類型為對象時:
C++:當參數類型為對象時,函數在傳參時進行對象的復制,在函數體里改變數組里的值,函數外面不會跟着改變;
C# :當參數類型為對象時,函數默認當成引用類型來處理,在函數體里改變數組里的值,函數外面也跟着改變;
7、局部變量和全局變量的名稱可不可以相同;
C++中是可以相同的,且局部變量會覆蓋全局變量的值;C#中全局變量和局部變量的名稱不可以相同;
8、C++中當局部變量被定義時,系統不會對其初始化,您必須自行對其初始化。定義全局變量時,系統會自動對其初始化;而在C#中無論是局部變量還是全局變量系統都會對其初始化;
9、關於路徑的寫法:
C#:絕對路徑:D:\\GisMap\\text2.txt;相對路徑:GisMap\\text2.txt,表示exe同級目錄下的Gismap目錄下的text2.txt文件;..\\GisMap\\text2.txt表示exe所在目錄下上一級目錄下的Gismap目錄下的text2.txt;
C++:絕對路徑:D:\\GisMap\\text2.txt;相對路徑:.\GisMap\\text2.txt,表示VC源碼同級目錄下的Gismap目錄下的text2.txt文件;..\\GisMap\\text2.txt表示VC源碼所在目錄下上一級目錄下的Gismap目錄下的text2.txt;
10:待補充...