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()中调用执行既可以得到这两个匿名类型
当定义一个匿名类型需要使用了关键字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()中调用执行既可以得到这两个匿名类型
相关文章推荐
- paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型
- Unity使用C#高级特性扩展方法
- 一个例子帮你搞懂C#语言高级特性系列(04) --- 匿名类型
- C#特性 匿名类型与隐式类型局部变量使用介绍
- paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型
- C#学习笔记(三)—–C#高级特性:匿名类型
- C#3.0新特性之隐式类型局部变量的使用
- 步步为营VS 2008 + .NET 3.5(4) - C# 3.0新特性之LambdaExpressions(Lambda表达式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)
- C# 3.0新特性初步研究 Part4:使用集合类型初始化器
- C# 3.0新特性初步研究 Part5:匿名类型
- VS 2005中使用C#的新特性:可空类型
- 微软免费图书《Introducing Microsoft LINQ》翻译Chapter2.1:C# 3.0 特性(对象初始化表达式\匿名类型\查询表达式)
- 步步为营VS 2008 + .NET 3.5(4) - C# 3.0新特性之LambdaExpressions(Lambda表达式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)
- [导入]VS 2005中使用C#的新特性:可空类型
- Unity(四):使用场景Ⅰ:建立类型映射
- C# 3.0新特性初步研究 Part4:使用集合类型初始化器_C#教程
- C# 3.0新特性初步研究 Part5:匿名类型_C#教程
- [.NET 3.x新特性五]匿名类型
- [导入]VS 2005中使用C#的新特性:可空类型
- C# 3.0新特性初步研究 Part1:使用隐含类型的本地变量_C#教程