變數宣告
C#是靜態語言,變數使用前須先宣告其型別
方便編譯器檢查
//函式內
static void Main(string[] args)
{
// 變數,c#沒有函式內常數
char c = 'a';
int i = 10;
double d = 10.0;
string s = "abcde";
int[] array = new int[10];
}
//類別成員
class MyClass{
// 可變屬性
private string name;
private int age;
// 不可變屬性
private readonly int ra;
//常數屬性
private const int ca = 100;
//類別屬性
private static int sa;
}
//struct成員
struct MyStruct
{
public string name;
public int age;
}
實值變數
變數本身就是物件本體
通常底層會使用C語言的基本型別實作
存取這種變數效率高
static void Main(string[] args)
{
int a = 10; // 變數內容就是32bit整數10
double d = 10.0;// 變數內容就是IEEE 754浮點數 10.0
char c = '風'; // 變數內容就是 unicode 16bit 中文碼
boolean b = true;// 變數內容就是true
//除了內建型別外,c#可使用自定義實質物件
MyStruct my;
my.name = "123";
my.age = 456;
}
參照變數
變數本身不是物件本體
但是我們可以藉由點運算子來使用物件
底層使用類似C語言的指標,但複雜得多,比較相似於C++的精靈指標
其資料格式是為了提供GC能夠順利回收不使用的記憶體設計的
static void Main(string[] args)
{
string s = "abcde"; // 參照變數定字
int len = s.Length; // 利用點運算子使用物件屬性
object o = new object(); //動態從heap中配置記憶體
o.ToString(); // 利用點運算子使用物件方法
}