2013-11-24 145 views
3

它有助於說明我對c#很陌生。值分配操作符在這種情況下如何工作?

但考慮下面的類:

class AllItems 
{ 
    private readonly Database database; 

    public AllItems(Database database) 
    { 
     this.database = database; 
    } 
} 

我有以下問題:

  1. 在上面的例子中,我們分配private readonly Database database它被傳遞到AllItems類的價值,是正確的?

  2. 如果我換了this.database = database左右,那看起來好像是database = this.database呢?

  3. 當我們說this.database,並this參考數據庫AllItems(Database database)或者它是指private readonly Database database

回答

7

在上面的例子中,我們分配私有隻讀數據庫,被傳遞到AllItems類數據庫世界價值,是正確的?

難道問題,如果我換this.database =數據庫各地,所以它看起來像數據庫= this.database呢?

是的,它會,你到底是什麼了做有分配數據庫參數傳遞的是數據庫(這將是null默認)值。

我們在說什麼this.database,這是指AllItems(數據庫數據庫)中的數據庫還是它指私人只讀數據庫數據庫?

this是當前類實例的縮寫,因此它指的是私有隻讀數據庫成員。

2
  1. 是會的問題,那麼你會(在這種情況下null)到database分配的this.database值。
  2. this.database在這種情況下是指private readonly Database database;字段。我建議你閱讀更多關於this關鍵字here
+0

是的,我的意思是指領域,而不是參數的構造函數傳遞。我糾正了我的答案 –

1
  1. 是的,它是正確的,你可以在類的構造函數設置了只讀字段,這是我們可以初始化只讀域/屬性的唯一地方。

  2. 重要的是交換沒有意義。當你這樣做時database = this.databasedatabase被賦值爲this.database這個值在這種情況下爲null,但是這個局部變量沒有被使用,並且在構造函數之外將變得不可用。

  3. this.database當然會引用您班級的私人領域。在這種情況下,私人字段和參數具有相同的名稱,所以我們必須使用this以避免含糊不清。

1

1)在上面的例子中,我們指定專用只讀數據庫的數據庫,被傳遞到AllItems類的價值,是正確的?

是的,this用於指代在類中聲明的對象。

2)如果我換了this.database =數據庫,它看起來像數據庫= this.database而不是?

是的,它會,如果你換它,然後而不是分配在構造函數中的private readonly Database database聲明爲參數數據庫中的值,它會在`私人只讀數據庫數據庫中的值賦給聲明爲參數數據庫在構造函數中。

3)我們在說什麼this.database,這是指AllItems(數據庫數據庫)中的數據庫,還是指私人只讀數據庫數據庫?

this是用來指在類聲明的變量關鍵字也知道爲全局變量,因此它是指private readonly Database database

而且看看When do you use the "this" keyword?

相關問題