日期:2014-05-17  浏览次数:21009 次

typeof关键字可以用于变量类型的声明吗?
<<C#入门经典>>上面说typeof可以用于Enum.Parse函数。我的问题是,其他的场景下,typeof怎么用?
下面这段小程序有编译的错误:

    enum e1 : int
    {
        Monday = 1
    };
    class Program
    {
        static void Main(string[] args)
        {
            e1 a=e1.Monday;//OK

            string s="Monday";
            e1 c=(e1)Enum.Parse(typeof(e1),s);//OK

            int i=2;
            typeof(i) b=i;//编译错误
        }
    }

也就是typeof(e1) b=e1.Monday;错了。我是想不管i是什么类型,b就和它是一样的类型。那么今后即便i的类型改了,b的类型也自动就修改了,有点C++11里面decltype的味道。

C#的typeof能做到这点么? 我的理解是否有偏差呢?
谢谢!

------解决方案--------------------
typeof 参数 不能为变量
------解决方案--------------------
typeof()传入的参数是class,得到的是Type t,
比如
typeof(int)

int i = 0; i.GetType();

对于你的“不管i是什么类型,b就和它是一样的类型”,你可以尝试用var b = i;这样