检查匿名类型是否等于指定的类型

时间:2012-02-04 03:26:02

标签: c#

class test<type>
{
    public test()
    {

    }

    public bool byteTest()
    {
        return new byte().Equals(new type()); // Error at new type()
    }   
}

我想检查匿名类型是否是指定类型。 (比如字节)

为什么我要这样做类似这样的东西我想限制匿名类型。就像我只想将匿名类型声明为字节或整数。

2 个答案:

答案 0 :(得分:3)

看起来您正在尝试查看类型参数(type)是否被实例化为特定类型(byte)。如果是这样,请尝试以下

public bool byteTest() {
  return typeof(byte) == typeof(type);
}

此处的名称type是指泛型类型参数。 C#中的匿名类型是指通过匿名类型表达式创建的值。像这样

var x = new { Name = "john", Age = 42 };

注意:为避免与Type类型混淆,我会选择更标准的通用参数名称,如TTValue等...

答案 1 :(得分:1)

C#中的is关键字专门用于此目的:

object something = "I am a banana.";
if (something is string)
{
    // This will execute, because something is a string.
}

请注意,即使null是字符串的有效值,以下测试也是false。

object something = null;
if (something is string)
{
    // This will not execute.
}