下面的內容是基於前面的C和C++語言知識基礎上延伸的
C#是一個現代的,面向對象的,面向組件的,結構化語言。由微軟開發,它的構想雖然十分直接C和C++,但是它和java非常相似。
C#是.Net框架的一部分,用於編寫.Net應用程序,什麼是.Net Framework?
.Net框架是一個創新平臺,能編寫出Windows應用程序,web應用程序,web服務。框架 (在程序設計方面)實際上是應用程序編程接口(API)和開發人員在開發應用程序時可以調用的共享代碼庫的集合。
C# 程序實例:
using System; // 任何C#程序中第一句都是這個,用於在程序中包含System命名空間
namespace RectangleApplication
// namespace聲明,裏面包含了一系列類,比如這個命名空間裏面包含了HelloWorld類
// 所以上面這是兩個命名空間
{
class Rectangle{
double length;
double width;
public void Acceptdetails()
{
length = 4.5;
width = 3.5;
}
public double GetArea() // 這裏計算面積
{
return length * width;
}
public void Display()
{
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}
class Execute
{
static void Main(string[] args) // Main()是所有C#程序的入口
{
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.WriteLine("hello"); // 這是System命名空間中Console類的一個方法,用於輸出
Console.ReadKey(); // 這是針對VS.NET用戶,防止啓動時屏幕會快速運行並關閉。
}
}
}
1. 動態類型
可以儲存任何數據類型在動態類型變量中,動態類型變量的類型檢查是在運行的時候發生的。
dynamic <name> = value;
2. string類型
C#的string字符串前面可以加上@符號,也就是逐字字符串,比如:
@‘<hello world>’
這個符號會將字符串裏面的特殊字符當做普通字符來對待
3. 接受來自用戶的值
Console.ReadLine()
接受來自用戶的輸入,儲存到一個變量裏面,但是隻接受字符串的輸入。
4. 訪問修飾符
public: 暴露給其他函數和對象,任何共有成員可以被外部的類訪問,所以該類的實例化對象可以訪問
private: 將成員進行隱藏,只有同一個類中的成員可以訪問這些私有成員,即使是該類的實例化對象都不可以訪問其私有成員。
Protected: 允許子類訪問他的基類的成員變量和成員函數,有助於實現繼承
Internal: 帶有internal訪問修飾符的任何成員可以被定義在該成員所定義的應用程序內的任何類或方法訪問
5. 調用方法的方式
三種傳遞值的方式,分別是:值參數,引用參數,輸出參數。這裏值參數就不做詳細介紹了
引用參數:
複製參數的內存位置的引用給形式參數,意味着改變形參就是改變實參,這裏不是使用&符號,而是使用ref關鍵字來定義引用:
public void swap(ref int x, ref int y);
輸出參數:
return語句只從函數中返回一個值,但是可以使用輸出參數來從函數中返回兩個值,使用out關鍵字來定義輸出參數
要點是,提供給輸出參數的變量不需要賦值,比如:
public void getValue(out int x, out int y){...}
// main中的調用
int a,b;
n.getValue(a, b);
在函數中對x,y的賦值,會直接輸出到x,y身上
6. 可空類型
?單問號用於對int, double等無法直接賦值爲null的數據類型賦值爲null,比如:
int ? num1 = null;
加上?如果聲明的時候不給初始化值,那麼默認值也會是null。
??兩個問號爲合併運算符,這個符號爲類型轉換定義了一個預設值,以防止某些變量的值爲空,比如num3 = num1 ?? 5.5
,這樣定義的話如果num1有值則用這個值,如果爲null則取5.5這個值。
7. C#數組
C#和C++中聲明數組的方式不太一樣:datatype[] arrayName
就是把[]放在了類型的後面,數組名的前面
數組賦值:double[] balance = new double[10];
,然後使用索引號賦值
還可以:double[] balance = { 2340.0, 4523.69, 3421.0};
直接賦值
可以使用foreach循環來訪問數組的每一個元素:
foreach (int j in n )
{
int i = j-100;
}
8. C#結構體
struct Books
{
public string title;
public string author;
public string subject;
public int book_id;
};
C#中的結構和C/C++中的結構有所不同:
- 結構可以定義構造函數,但是不可以定義析構函數
- 與類不同,結構不可以繼承其他的類或者結構
- 結構不可以作爲其他結構或者類的基礎結構
- 如果不適用new操作符,只有在所有的字段都被初始化之後,字段纔會被賦值,對象才被使用