none
GetType Operator 与 System.Type.GetType Method 的区别是什么? RRS feed

  • 问题

  • 有两种定义DataColumn的方法:
            Dim dt As New DataTable()
            dt.Columns.Add("Column1", GetType(String))
            dt.Columns.Add("Column2", System.Type.GetType("Sytem.String"))

    但是不理解两种方法的区别,什么时候用那种方法?MSDN上都是用第二种方法作例子,但是有的书上用第一种方法。查了半天也不是很清楚。没有感性认识,理解上游困难。

    还有就是 DataTable 后边的括号是什么意义,没有行不行?比如说 SaveFileDialog 后头有没有() 都是一样的效果,(起码看上去是这样的)。这个()应该怎么用?

    多谢各位了。


     

    2009年9月14日 13:44

答案

  • 你好!
         首先是参数的类型不同,GetType操作符需要一个类型做为参数,而GetType方法需要一个字符串作为参数!

         关于你的代码,使用这两种方式是一样的效果!
         实际上在C#中看的更明显一些,一个typeof,一个是GetType()
        
    周雪峰
    2009年9月15日 3:21
    版主
  • 你好!
         GetType操作符的参数需要是一个类型才可以,例如String
         而Type.GetType内部使用的是反射机制,只有在运行时才会抛出异常:
         例如
                Dim t As Type=Type.GetType("System.String")
                Console.WriteLine(t.Name)
         在运行时才会抛出异常
    周雪峰
    2009年9月15日 11:37
    版主

全部回复

  • 你好!
         首先是参数的类型不同,GetType操作符需要一个类型做为参数,而GetType方法需要一个字符串作为参数!

         关于你的代码,使用这两种方式是一样的效果!
         实际上在C#中看的更明显一些,一个typeof,一个是GetType()
        
    周雪峰
    2009年9月15日 3:21
    版主
  • 很感谢解答。

    再多问一个问题:

    有人说,GetType操作符必须提供Type才能编译,而GetType方法只是在运行时才报错。不知道是不是这样。

    2009年9月15日 10:05
  • 你好!
         GetType操作符的参数需要是一个类型才可以,例如String
         而Type.GetType内部使用的是反射机制,只有在运行时才会抛出异常:
         例如
                Dim t As Type=Type.GetType("System.String")
                Console.WriteLine(t.Name)
         在运行时才会抛出异常
    周雪峰
    2009年9月15日 11:37
    版主
  • 太棒了。

    多谢指教。基础知识好就是强。
    2009年9月15日 13:14
  • 不用客气啊!
    周雪峰
    2009年9月16日 5:13
    版主