C#开发的OpenRA游戏使用匿名类
OpenRA游戏里,使用了很多C#的特性,比如下的代码:
var orders = self.TraitsImplementing<IIssueOrder>()
.SelectMany(trait => trait.Orders.Select(x => new { Trait = trait, Order = x }))
.Select(x => x)
.OrderByDescending(x => x.Order.OrderPriority);
在这里使用匿名类new { Trait = trait, Order = x },
这个类没有名称,有两个成员,一个是Trait,另一个是Order。
匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。 类型名由编译器生成,并且不能在源代码级使用。 每个属性的类型由编译器推断。
可通过使用 new 运算符和对象初始值创建匿名类型。
匿名类型通常用在查询表达式的 select 子句中,以便返回源序列中每个对象的属性子集。
整个例子的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threadin