这是一个非常奇怪的问题,真的让我很紧张。我正在制作一个简单的 C# ServicesManager 类。但是我绝对没有明显的原因遇到这个问题。无论如何,这是有问题的功能:
/// <summary>
/// This function checks if the ServicesManager contains a service of the specified type or not.
/// </summary>
/// <param name="serviceType">The type of service to check for.</param>
/// <returns>True if a service of the specified type is found, or false otherwise.</returns>
public bool Contains(Type serviceType)
{
bool result = false;
Type t = serviceType;
foreach (ISE_Service s in m_ServicesList)
{
if (s is serviceType)
{
result = true;
break;
}
}
return result;
}
ISE_Service 只是一个表示服务类的接口。上面的函数只是检查指定类型的服务是否已经存在于 ServicesManager 中。
错误列表显示以下错误,并始终在 if 语句中用红色波浪线突出显示“serviceType”:
错误 3 找不到类型或命名空间名称“serviceType”(是否缺少 using 指令或程序集引用?) C:\MegafontProductions\SpiritEngine\SpiritEngine\Source\ApplicationLayer\ServicesManager.cs 55
这个错误没有意义。它是这个函数的一个参数。据我所知,此问题是由 is 关键字或类型 Type 引起的。如您所见,在循环上方访问参数 serviceType 就好了。那么它是怎么突然在 if 语句中找不到它的呢?