.NET基础
?.NET C# ASP.NET關系:.NET是一個平臺,提供程序運行的虛擬機環境和類庫。
C#是.Net平臺上的一種語言,其他語言還有VB.NET PowerShell等。
ASP.NET是在.NET下的網站開發技術。
安裝.NET FrameWork就可以運行。VS集成安裝了.NET FrameWork.
控制臺程序 Windows窗口程序(WPF/WinForms)網站程序 ASP.NET 手機程序(Xarmarin Windows phone)
快捷鍵:
設置文檔格式(編輯-》高級-》設置文檔格式)?
開始調試F5
解決方案和項目 sln csproj
Debug Release(Debug運行效率低,包含調試信息 Release生成的程序小,調試麻煩)?
Console.Beep(int,int)讓計算機發出蜂鳴聲。 第一個參數是頻率,第二個參數是時間。
Consol.SetCursorPosition(int x,int y)設置光標位置,橫向x不超過79.
Console.BackgroundColor=ConsoleColor.Red;
Console.ForegroundColor=ConsoleColor.Blue;?
Console.ResetColor();恢復默認設置
?反編譯工具ILSpy 注釋沒有,因為注釋信息沒在exe文件中。不可能完全還原。只能反編譯.NET程序。
如何避免反編譯:混淆器,沒太大研究價值。因為主要做web程序,是放在服務器上的,普通用戶是拿不到程序的。
?string是關鍵字,但是String不是關鍵字。Main也不是關鍵字。
?標識符是給類,方法,變量用的。類、方法首字母大寫。變量首字母小寫,駝峰命名法。createMenuItem
?局部變量使用前必須賦值。
選擇數據類型的時候在考慮數據的范圍之后,選擇最小范圍的類型 ,可以節省資源。
隱式類型轉換和強制類型轉換
float f=3.14//報錯,3.14是Double類型,需要指定為float f=3.14F
doublue d=3.14/3.14D/5都可以。?
\n也是字符。
console.writeline(@"C:\test.txt");
?i.ToString();
Convert.ToString(i);推薦,為null時不會拋出異常。
C#中是不允許用new操作符創建String對象的,編譯器會報錯。Equals有三個版本: ??
public???override???bool???Equals(object);???public???bool???Equals(string);???
public???static???bool???Equals(string,???string);?
前兩個實例方法內部會調用CompareOrdinal靜態方法,它會字符串中的各個字符,如果相等就返回true。第三個首先會檢查兩個引用指向的是否是同一個對象,如果是,就返回true,不再去比較各個字符了。
其實CLR使用了一種叫字符串駐留的技術,對于
string?? str1="abc";
string?? str2="abc";
當CLR初始化時,會創建一個內部的散列表,其中的鍵為字符串,值為指向托管堆中字符串的引用。剛開始,散列表為空,JIT編譯器編譯方法時,會在散列表中查找每一個文本常量字符串,首先會查找"abc"字符串,并且因為沒有找到,編譯器會在托管堆中構造一個新的指向"abc"的String對象引用,然后將"abc"字符串和指向該對象的引用添加到散列表中。
接著,在散列表中查找第二個"abc",這一次由于找到了該字符串,所以編譯器不會執行任何操作,代碼中再沒有其它的文本常量字符串,編譯器的任務完成,代碼開始執行。執行時,CLR發現第一個語句需要一個"abc"字符串引用,于是,CLR會在內部的散列表中查找"abc",并且會找到,這樣指向先前創建的String對象的引用就被保存在變量s1中,執行第二條語句時,CLR會再一次在散列表中查找"abc",并且仍然會找到,指向同一個String對象的引用會被保存在變量s2中,到此s1和s2指向了同一個引用,所以System.Object.Equals(s1,s2)就會返回true了。
??Console.Write(5 + 5 + "hello" + (4+4));?
?算術>關系>邏輯>賦值
?
轉載于:https://www.cnblogs.com/wzf-Learning/p/6693015.html
總結
- 上一篇: java go
- 下一篇: Vue组件间通信:一个例子学会Vue组件