2012-02-04 139 views
1
class test<type> 
{ 
    public test() 
    { 

    } 

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

我想检查一个匿名类型是否是指定类型。 (像字节)检查匿名类型是否等于指定类型

为什么我想这样做类似这样的事情是我想限制匿名类型。就像我只想将匿名类型声明为一个字节或整数。

+0

a.gettype()。tostring()== b.gettype()。tostring();-) – stefan 2012-02-04 03:29:29

回答

3

它看起来像是试图查看类型参数(type)是否被实例化为特定类型(byte)。如果是的话请尝试以下

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

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

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

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

+0

谢谢!我也使用了不同的AnonymousType名称。这只是一个例子。我认为这会起作用 – haxxoromer 2012-02-04 03:31:17

+0

ahh我总是对这些定义感到困惑:D是这是一个泛型类型参数:) – haxxoromer 2012-02-04 03:35:19

1

C#中的is关键字为此专门意思目的:

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

注意下面的测试为假,即使null是一个字符串的有效值。

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

谢谢你的帮助 – haxxoromer 2012-02-04 03:45:59