C#有兩個方法可以一確保變數在使用前進行了初始化:
變數是字段,如果沒有明確初始化,創建這些變數時,其預設值為0。
方法的局部變數必須在程式碼中明確初始化,之後才能在語句中使用,如果在初始化之前使用了他的值,則報錯。
如果局部變數作用域衝突,報CS0136錯。
字段與局部變數衝突,隱藏掉字段,存取被隱藏的實例字段用this關鍵字,靜態字段使用object.fieldname。
常數必須在宣告時初始化,指定其值後將不允許變更。
常數的值必須在編譯時用於計算,不能從變數中提取值。
常數總是靜態的,不允許使用static關鍵字進行修飾。
易於閱讀
易於修改
#容易避免出錯
值型別與參考型別
概念與儲存方法的差異,參考第一章。
# 要建立物件必須使用new關鍵字,將一個引用類型賦值給另一個引用類型得到的只是它的位址,會隨著它的改變而改變。如:
Test x,y; x testX = new Test(); y testY = x; testX.value =1; //这条语句执行后testX与testY的value属性的值都会为
C#認可的基本預定義類型並沒有內建在C#中,而是內建在.NET Framework中。
decimal不是.NET Formework內建型,會造成效能損失。
bool型別不能用0來表示false,非0表示true。
所有內建型別都繼承Object型別。
string 的不可變性:如上述程式碼中的testX和testY如果他們是string類型,當testX所指向的string改變時,會重新在託管堆中創建出一個新的string並指向它,testY所指向的值也不會被更改。
if ,else if,else。
#case語句的值必須要是常數表達式,不允許使用變數。
与C++的区别:激活了前一个case不会自动激活后一个case,且每一个case必须用break否则报错;可以把字符串作为测试变量。
可以使用goto "标签"经行跳转。
case为空则不需要break。
循环
for 与 while的区别:for适合可预测次数的循环,while适合不可预测次数的循环。
foreach
要实现foreach的遍历,类中就必须实现IEnumerable接口。
foreach中不能改变每一项的值。
goto
break
跳出当前循环
continue
跳过此次循环
return
退出当前方法
一旦代码编辑好,枚举就成为基本类型。
与文件或组件不同,名称空间是一种逻辑组合,而不是物理组合。
一般名称空间可接受的格式为CompanyName.ProjectName.StstemSection。
名称空间别名的语法:
using slias = NamespaceName;
命名空间修饰符为 “::” 。
1 //using System; 2 using TestSystem = System; 3 4 namespace 命名空间别名 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 TestSystem::Console.WriteLine("This is a C# Progam"); 11 TestSystem.Console.ReadKey(); 12 } 13 } 14 }
命名空间别名演示
#if #elif 支持一组逻辑运算符“!”、“==”、“!+”、“||”。
可以包含数字字符,但是它们他们必须以字母或下划线开头。
不能使用C#关键字作标识符。
规则应该是一个正确的决策,而不是一种束缚。
Pascal:名称空间、类、函数名。
Camel:类中的字段(最好加“_”为前缀能更直观的知道这是个字段)、方法的参数。
#名稱/命名的風格應盡量保持一致。
命名空間是.NET區別共享程式集中物件名稱的唯一方法。
Microsoft建議使用以下名稱空間:d04661e771feadb793ae73b35fbaae73.72f679de98f4cda0c0a9d332c4b5adaa
#名稱與關鍵字
#屬性和方法的使用
如果該對象的外觀像一個對象,就用屬性來表示它,即:
客戶端醫改能讀取它的值,最好不要使用只寫屬性。
讀取該值不應該花他長時間。
以上是C#高階程式(二)-核心C#的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!