c#syntax help - &gt;什么是Get <t>(),其中T表示</t>

时间:2010-12-13 02:40:57

标签: c#

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;
}

请解释一下Get()T的含义是什么?

欢迎使用一些阅读网址。

3 个答案:

答案 0 :(得分:2)

这是一个通用的例子。 'T'代表一种类型。

例如:

string result = Get<string>();

对Generics进行Google搜索。这将帮助您入门:http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx

答案 1 :(得分:2)

where T : class限制了T允许的类型。这将

  1. 如果输入错误的类型,则会给出编译错误
  2. 授予您访问方法/属性的权限,或根据约束
  3. 实例化T的实例

    因此,对于您的方法,如果您像Get<int>()那样调用它,则会产生错误,因为int不是类。

    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);
    }
    

答案 2 :(得分:1)

这将在这种特殊情况下将T约束为引用类型。