110,538
社区成员
发帖
与我相关
我的任务
分享
class aaa<T>
{
public T a;
}
public class Test<T>
{
public T data { get; set; }
public Test(T t)
{
this.data = t;
}
}
从技术角度讲,C#完全有能力推断出 T 的类型。并且在其他场合下都是这么做的
但有参构造函数并不是必须的,对于无参构造函数,该如何推断类型呢?
所以 C# 才约定泛型类实例化时必须显式的声明类型var ccc = new Test<int>(aaa);
这是你个人的习惯问题,是个小问题,这跟 var 不一样(那是许多编程语言的潮流)。c# 的语法糖已经很好了。 public class Test<T>
{
public T data { get; set; }
public Test(T t)
{
this.data = t;
}
}
class Program
{
static void Main(string[] args)
{
int aaa = 1;
//一样不行
var ccc = GetObject(aaa);
Console.WriteLine($"ccc的类型为{ccc.GetType().FullName}");
}
static Test<T> GetObject<T>(T x)
{
return new Test<T>(x);
}
}
namespace CTest
{
public class Test<T>
{
public T data { get; set; }
public Test(T t)
{
this.data = t;
}
}
class Program
{
static void Main(string[] args)
{
int aaa = 1;
//一样不行
object ccc = new Test(aaa);
//不想写这个<int>,希望通过aaa这个参数类型推断出来
//object ccc = new Test<int>(aaa);
}
}
}