快速问题,我有一个我正在实例化的Generic类,但是我遇到了默认在类中设置的基元的问题。
public class HeroLaunchData
{
public int player;
public int team;
//....
public bool withAnimation = true;
//....
当我使用通用的新功能时,这不是一个符号,任何想法为什么会这样?
是的,我正在做新的喜欢public static T WoRDeserializer<T>(string serializedObj, char separator = ';') where T : class, new()
{
//...
T obj = new T();
//...
谢谢!
答案 0 :(得分:1)
要为任何通用类/方法设置默认值,您必须使用default
关键字。
default Keyword in Generic Code (C# Programming Guide)
在通用类和方法中,出现的一个问题是如何分配 当你不知道时,参数化类型T的默认值 提前关注:
- T是引用类型还是值类型。
- 如果T是值类型,则它是数值还是结构。
给定参数化类型T的变量t,语句t = null 仅当T是引用类型且t = 0才有效时才有效 数值类型,但不适用于结构。解决方案是使用 default关键字,它将为引用类型返回null并为零 对于数值类型。对于结构,它将返回每个成员 struct初始化为零或null,具体取决于它们是否为 价值或参考类型。对于可为空的值类型,default返回a System.Nullable,它像任何结构一样被初始化。
而不是初始化T
的新实例,而不是在代码中使用`default(T)。
public static T WoRDeserializer<T>(string serializedObj, char separator = ';') where T : class, new()
{
//...
// T obj = new T();
T obj = default(T);
//...