C#類型所含的數據類型
與其他大部分語言類似,C#擁有int、bool等等值類型數據以及用戶可以自定的struct(結構體)類型,
他們都是繼承於System.ValueType這個類的,而System.ValueType又繼承於System.Object這個類。
Int整形
int在C#中其實做了一些處理,他並不是直接代表其他語言裏的int,
在C#中,int的真實名稱其實爲System.Int32,
類似的,bool的真實名稱其實爲System.Boolean等等。
需要注意的是,在C#當中,int的默認構造就是0
所以直接調用int的默認構造函數與賦值0效果是一樣的。
using System;
namespace u3dTest1
{
class Program
{
static void Main(string[] args)
{
int intValue = 0;
int intValue2 = new int();
//上面兩種寫法其實是等價的,在c#當中int的默認構造就是0
//第二句話就是調用了int的默認構造函數,也就等於第一句話
//vs的快捷鍵f12就可以跳到定義區,裏面有詳細構造,其他的類型也一樣
}
}
}
intValue.CompareTo
intValue.Equals
intValue.GetHashCode...
這些都是int一些可視的接口與方法
Struct結構體
strcut的目的就是用來打包封裝一個比較小的數據集,
在strcut裏也可以像class一樣定義方法、事件等等,它基本可以做到class能做到的大部分事。
using System;
namespace u3dTest1
{
class Program
{
static void Main(string[] args)
{
Person person = new Person();//調用下面定義的結構體
person.age = 10;
Console.WriteLine(person.age);
/*需要注意的是,雖然age在結構體裏定義的是一個int類型,但通過WriteLine
打印出來的將被轉換成string類型輸出在控制檯上*/
Console.ReadLine();//用來暫停,顯示結果
}
struct Person
{
public int age;
public string name;
public string fname;
public string lastName;
}
}
}
在定義成員屬性時也要用到訪問權限修飾符,跟java大同小異
public 公開的可視的
private 私有的,只有同一個類裏可以訪問
internal 在同一個包內(同一個命名空間內),可以訪問
protected 繼承於它的類也可以訪問它
同一個類 | 同一個包 | 同一個包的子類 | 不同包的非子類 | |
public | ✔ | ✔ | ✔ | ✔ |
protected | ✔ | ✔ | ✔ | ✖ |
internal | ✔ | ✔ | ✖ | ✖ |
private | ✔ | ✖ | ✖ | ✖ |
enum枚舉類型
枚舉類型的主要功能就是限定變量的可能性,
比如現在枚舉了days天,那麼它只有可能是週一到週日,不可能是“一月”
枚舉默認的基礎類型是int,且默認從0開始,類似於下標
using System;
namespace u3dTest1
{
//如果像現在枚舉的是string類型,在輸出時強轉成int,就會輸出對應的下標
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
//當然,你也可以在定義的時候確定它的基礎類型,比如byte字節型和short短整形等等所有非char的類型
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
class Program
{
static void Main(string[] args)
{
//調用枚舉類型可以用兩種方式
/*1.*/
Console.WriteLine(Days.Monday);//直接調用之前定義的枚舉類型Days
/*2.*/
var day = Days.Thursday;/*var的作用就是無論你現在聲明或者賦予這個變量什麼類型的值都可以,都視爲可行,
只有到需要真正確定它是什麼類型時纔會去自動設定類型*/
Console.WriteLine(day);//先把Days.Thursday的值賦予變量day,再打印day
Console.WriteLine((int)Days.Monday);//強轉int
Console.ReadLine();//用來暫停,顯示結果
}
}
}