【问题标题】:How to pass a type to a method?如何将类型传递给方法?
【发布时间】:2012-11-26 23:21:50
【问题描述】:

如何调用这个构造函数?

public class DataField
{
    public String Name;
    public Type TheType;
    public DataField(string name, Type T)
    {
        Name = name;
        TheType = T;
    }
}

我想到了

f = new DataField("Name",typeof(new String()));

但我想避免创建对象。 那么这个可以吗?

f = new DataField("Name",String);

【问题讨论】:

  • 编译器是怎么说的?
  • 你想用 TheType 做什么?也许你可以使用泛型?

标签: c#


【解决方案1】:

您可以使用带有typeof 的类型名称:

f = new DataField("Name", typeof(string));

【讨论】:

    【解决方案2】:

    你应该可以简单地使用typeof(string)

    【讨论】:

      【解决方案3】:

      传递String.class 应该可以。它是Class的一个实例,它实现了Type:

      new DataField("Name", String.class);
      

      【讨论】:

      • @CodeIgnoto:我相信 Alexey 的意思是将 String 传递给 typeof 函数,他只是没有说得很清楚。阿列克谢……说得更清楚!
      • 我没有投反对票,但你怎么能传递一个类名。在这种情况下,你需要一个 Type 实例,这只能通过 typeOf 或 GetType 实现
      • 对不起,我的意思是String.class。更新了答案。
      • 好的...现在你肯定偏离了目标。 string.class 是什么?它不存在!
      • X.class 是引用类X 的Class 对象的语法。我对你的小写 string 有点困惑。 Java 中的标准String 类以大写字母开头。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多