C# 反序列化需要一個(gè)空構(gòu)造函數(shù)

var user = JsonSerializer.Deserialize<UserModel>(jsonStr, new JsonSerializerOptions()
                {
                    PropertyNameCaseInsensitive = true
                });
public class UserModel
    {
        public UserModel()
        {

        }
        public UserModel(string email, string gid)
        {
            Email = email;
            Gid = gid;
        }

        public string Email { get; set; }
        public string Gid { get; set; }
    }

1.用類創(chuàng)建對(duì)象時(shí)使用構(gòu)造函數(shù)。構(gòu)造函數(shù)名必須與類名相匹配并且必須沒(méi)有返回類型。它們可以被重載,但是不被子類繼承。

調(diào)用構(gòu)造函數(shù)

2.只能從其他構(gòu)造函數(shù)中調(diào)用構(gòu)造函數(shù)。要調(diào)用同一個(gè)類中的構(gòu)造函數(shù),用匹配的參數(shù)調(diào)用 this() 函數(shù)。
要調(diào)用超類中的構(gòu)造函數(shù),用匹配的參數(shù)調(diào)用 super() 函數(shù)。
創(chuàng)建子類對(duì)象時(shí),按層次結(jié)構(gòu)中從上到下的順序調(diào)用所有超類的構(gòu)造函數(shù)。

3.默認(rèn)構(gòu)造函數(shù)

如果沒(méi)有在類中提供任何其他構(gòu)造函數(shù),編譯器將創(chuàng)建默認(rèn)構(gòu)造函數(shù)。它沒(méi)有任何參數(shù)。
默認(rèn)構(gòu)造函數(shù)調(diào)用超類的無(wú)參數(shù)構(gòu)造函數(shù)。它與類有同樣的訪問(wèn)修飾符。

不過(guò),哪怕在類中編寫了一個(gè)構(gòu)造函數(shù),編譯器就不會(huì)提供默認(rèn)構(gòu)造函數(shù)。
例如,下面的類具有一個(gè)定義了兩個(gè)參數(shù)的構(gòu)造函數(shù)。這里如果我們?cè)噲D不傳遞參數(shù)就實(shí)例化這個(gè)類,
那么編譯器將給出錯(cuò)誤,因?yàn)闆](méi)有默認(rèn)構(gòu)造函數(shù)

class Dog

{

    int x, y;

    Dog(int x, int y)

    {

      this.x = x;

      this.y = y;

    }
}

4.如果調(diào)用類的默認(rèn)構(gòu)造函數(shù),而超類沒(méi)有不帶參數(shù)的構(gòu)造函數(shù),那么您的代碼將不能編譯。
原因是子類的默認(rèn)構(gòu)造函數(shù)隱式地調(diào)用其超類的無(wú)參數(shù)構(gòu)造函數(shù)。例如:

class Dog
{

    int x, y;

    Dog(int x, int y)

    {

      this.x = x;

      this.y = y;

    }

}

class MyDog extends Dog { }

class Test

{

    public static void main(String args[])

    {

      MyDog dog=new MyDog();

    }

} 

一般情況下是可以不寫,系統(tǒng)有一個(gè)默認(rèn)的構(gòu)造方法,但是如果你自己加了一個(gè)構(gòu)造方法,
那么默認(rèn)的就失效了,需要自己加進(jìn)去,就算沒(méi)寫代碼也要加

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容