您的位置:首页 > 移动开发 > Unity3D

Unity中C#高级特性匿名类型使用

2014-10-25 19:08 926 查看
        有时候需要封装一些简单的数据,但是不需要任何关联的方法、事件、属性或者是自定义的构造函数,这时候就可以使用匿名类型来实现了:

        当定义一个匿名类型需要使用了关键字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()中调用执行既可以得到这两个匿名类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity c# 编码 数据
相关文章推荐