第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

字段初始值設(shè)定項(xiàng)不能引用非靜態(tài)字段,方法或?qū)傩詥幔?/h1>

我有一個(gè)存儲(chǔ)庫(kù)類和一個(gè)服務(wù)類,如下所示:public class DinnerRepository{    DinnerDataContext db = new DinnerDataContext();    public Dinner GetDinner(int id)    {        return db.Dinners.SingleOrDefault(d => d.DinnerID == id);       }// Others Code        }public class Service{        DinnerRepository repo = new DinnerRepository();         Dinner dinner = repo.GetDinner(5);// Other Code}這引發(fā)錯(cuò)誤:字段初始值設(shè)定項(xiàng)不能引用非靜態(tài)字段,方法或?qū)傩?。即使我?duì)DinnerRepository類進(jìn)行了詳細(xì)說明,也可以在Service Class中公開其方法GetDinner()??梢栽谙旅娴拇a中正常工作。是否有其他替代方法還是標(biāo)準(zhǔn)做法?我不能在這里使用靜態(tài)方法。public class Service{    public Service()    {        DinnerRepository repo = new DinnerRepository();         Dinner dinner = repo.GetDinner(5);    }}
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

我個(gè)人只是在構(gòu)造函數(shù)中初始化字段:


public class Service

{

    private readonly DinnerRepository repo;

    private readonly Dinner dinner;


    public Service()

    {

        repo = new DinnerRepository();

        dinner = repo.GetDinner(5);

    }

}

請(qǐng)注意,這與您在問題底部顯示的代碼不同,因?yàn)檫@只是聲明局部變量。如果只需要局部變量,那很好-但是,如果需要實(shí)例變量,則使用上面的代碼。


基本上,字段初始值設(shè)定項(xiàng)的功能有限。根據(jù)C#4規(guī)范的10.5.5.2節(jié):


實(shí)例字段的變量初始化器無法引用正在創(chuàng)建的實(shí)例。因此,this在變量初始值設(shè)定項(xiàng)中引用是編譯時(shí)錯(cuò)誤,因?yàn)閷?duì)于變量初始值設(shè)定項(xiàng)通過simple-name引用任何實(shí)例成員都是編譯時(shí)錯(cuò)誤。


(“因此”和“因此”在我看來是錯(cuò)誤的方式-通過簡(jiǎn)單名稱引用成員是非法的,因?yàn)樗胻his-我將對(duì)其進(jìn)行ping Mads-但這基本上是相關(guān)的部分。)



查看完整回答
反對(duì) 回復(fù) 2019-11-04
?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊

即使可以保證初始化表達(dá)式按“文本順序”執(zhí)行,實(shí)例字段初始化程序也無法訪問該this引用,并且您在其中隱式使用了該引用。


Dinner dinner = repo.GetDinner(5); 

相當(dāng)于


Dinner dinner = this.repo.GetDinner(5);

恕我直言,最佳實(shí)踐是將字段初始化保留為常量值或簡(jiǎn)單new語句。任何比該多的東西都應(yīng)該交給構(gòu)造函數(shù)。




查看完整回答
反對(duì) 回復(fù) 2019-11-04
  • 2 回答
  • 0 關(guān)注
  • 270 瀏覽

添加回答

了解更多

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)