【发布时间】:2015-03-09 10:55:32
【问题描述】:
我正在开发一个有趣的小游戏,但我偶然发现了 C# 的 is 运算符令人困惑的时刻。代码如下:
public static InventorySlot FindSlotWithItem(this IInventory inventory, Type itemType)
{
return inventory.InventorySlots.FirstOrDefault(t => t is itemType);
}
就目前而言,此代码无法编译,因为我的 Visual Studio 告诉我找不到类型或命名空间名称“itemType”。我想知道为什么会这样,并在 MSDN 上查找了一些信息。这是我发现的:
是(C# 参考): 检查对象是否与给定类型兼容。例如,下面的代码可以判断一个对象是 MyObject 类型的实例,还是从 MyObject 派生的类型
这些行让我更加困惑,因为我清楚地将对象作为第一个参数传递,将类型作为第二个参数传递。我知道这与编译器查找名为“itemType”的类型有关,但这并不是我想要的行为。
请告诉我为什么这样的语法不起作用以及为什么 'itemType' 不被 'is' 运算符视为类型。
【问题讨论】: