2016-12-02 68 views
0

快速問題,我有一個泛型類,我正在實例化,但我遇到了在類中默認設置的基元的問題。設置通用的默認值

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

如果我理解了你的問題,可能是default(T)。也不要張貼圖片 – mybirthname

+0

這裏不要轉載。你可以發佈你的文本代碼嗎? –

+0

@mybirthname這總是會產生'null'。 –

回答

1

對於任何通用類/方法必須使用default關鍵字設置默認值。

default Keyword in Generic Code (C# Programming Guide)

在泛型類和方法,有一個問題是出現是如何分配 默認值的參數化類型T的時候,你不知道 提前以下:

  • T是一個引用類型還是一個值類型。
  • 如果T是一個值類型,它將是數值還是結構。

給定一個參數化的類型T,該語句t的變量t =零 纔有效,如果T是引用類型和t = 0將只 數值類型而不是結構工作。解決方案是使用默認關鍵字 ,該關鍵字將針對參考類型返回null,對於數值類型則返回零 。對於結構體,它將返回 的每個成員,初始化爲0或null的結構體取決於它們是否爲 值或引用類型。對於可爲空的值類型,默認返回一個 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); 
    //...