Unity中C#高階特性匿名型別使用
阿新 • • 發佈:2019-01-22
有時候需要封裝一些簡單的資料,但是不需要任何關聯的方法、事件、屬性或者是自定義的建構函式,這時候就可以使用匿名型別來實現了:
當定義一個匿名型別需要使用了關鍵字var和物件初始化的語法。使用關鍵字var可以是編譯器在編譯的時候自動新的類的定義。初始化語法告訴編譯器建立私有的後臺欄位和(私有)屬性。
新建一個類
using UnityEngine; using System.Collections; using System; using System.Reflection; /// <summary> /// Anonymous types.學習C#高階特性匿名方法// /// </summary> public class AnonymousTypes : MonoBehaviour { // Use this for initialization void Start () { //構建一個匿名物件表示汽車// var myCar = new{Color1 = "White",Make = "make",CurrSpeed = 55}; var yourCar = new{Color1 = "White",Make = "make",CurrSpeed = 55}; ReflectionAnonymousTypes (myCar); Debug.Log ("MyCar is a " + myCar.Color1 + " " + myCar.Make + " " + myCar.CurrSpeed); //呼叫輔助方法通過實參創造匿名型別// BuildAnonType("BMW","Black",100); } // 檢視匿名型別的資料型別// void ReflectionAnonymousTypes(object obj){ Debug.Log ("obj.GetType().Name " + obj.GetType ().Name); Debug.Log ("base class " + obj.GetType ().Name + "of" + obj.GetType().BaseType); Debug.Log ("obj.ToString() " + obj.ToString()); Debug.Log ("obj.GetHashCode() " + obj.GetHashCode()); } // Update is called once per frame void Update () { } <pre name="code" class="csharp"> void BuildAnonType(string make,string mColor,int currSp){ // 使用傳入引數構建匿名型別// var car = new {Make = make,Color1 = mColor, Speed = currSp}; //使用該型別獲取屬性資料// Debug.Log ("You have a " + car.Color1 + " " + car.Make + " " +car.Speed); Debug.Log ("car" + car); } }
上述程式碼中,建立一個新建匿名型別的方法BuildAnonType()
以及使用了硬編碼實現的一個 匿名型別<pre name="code" class="csharp">void BuildAnonType(string make,string mColor,int currSp){ // 使用傳入引數構建匿名型別// var car = new {Make = make,Color1 = mColor, Speed = currSp}; //使用該型別獲取屬性資料// Debug.Log ("You have a " + car.Color1 + " " + car.Make + " " +car.Speed); Debug.Log ("car" + car); }
var myCar = new{Color1 = "White",Make = "make",CurrSpeed = 55};
然後在Start()中呼叫執行既可以得到這兩個匿名型別