c#语法帮助->;得到什么<;T>;()T的意思是 publicstatict Get(),其中T:class { 字符串implName=Program.Settings[typeof(T).Name].ToString(); objectconcrete=Activator.CreateInstance(Type.GetType(implName)); 返回(T)混凝土; }

c#语法帮助->;得到什么<;T>;()T的意思是 publicstatict Get(),其中T:class { 字符串implName=Program.Settings[typeof(T).Name].ToString(); objectconcrete=Activator.CreateInstance(Type.GetType(implName)); 返回(T)混凝土; },c#,C#,请解释一下Get()是什么意思 欢迎放置一些阅读URL。这是一个通用URL的示例T'表示一个类型 例如: public static T Get<T>() where T : class { string implName = Program.Settings[typeof(T).Name].ToString(); object concrete = Activator.CreateInstance(Type.GetType(implName)); retu

请解释一下Get()是什么意思


欢迎放置一些阅读URL。

这是一个通用URL的示例T'表示一个类型

例如:

public static T Get<T>() where T : class
{
    string implName = Program.Settings[typeof(T).Name].ToString();
    object concrete = Activator.CreateInstance(Type.GetType(implName));

    return (T)concrete;
}
string result=Get();

在谷歌上搜索泛型。这将让您开始:

其中T:class对
T
允许的类型进行限制。这将

  • 如果输入了错误的类型,将显示编译器错误
  • 允许您访问访问方法/属性或基于约束实例化T的实例
  • 因此,对于您的方法,如果您像这样调用它,则会产生错误,因为
    Get()
    不是类

    string result = Get<string>();
    
    publicstatict Get(),其中T:class
    {
    字符串implName=Program.Settings[typeof(T).Name].ToString();
    var implType=Type.GetType(implName);
    return(T)Activator.CreateInstance(implType);
    }
    
    在这种特殊情况下,这将约束T为引用类型。

    第一个示例将引发编译器错误,因为
    int
    不是引用类型。您应该在这里提到不会编译的
    where
    约束(或删除第一个示例)的重要性。不存在这样的过载。啊,是的。。。糟糕的是,T和type参数是不明确的。请注意,这段代码对我来说非常脆弱。如果您使用设置中没有键的类型调用它,它将抛出异常。
    public static T Get<T>() where T : class
    {
        string implName = Program.Settings[typeof(T).Name].ToString();
        var implType = Type.GetType(implName);
    
        return (T)Activator.CreateInstance(implType);
    }