2010-11-16 17 views
3

當您將此列表作爲方法的參數時,這意味着什麼?此列表<string> ListName作爲參數嗎?

public static void KillZombies(this List<Zombie> ZombiesToKill, int NumberOfBullets) 
{ 
    ... 
} 
+0

找不到它,但我敢肯定這個問題是重複的... – 2010-11-16 21:10:02

回答

8

這將意味着,該方法是Extension Method

調用方法的代碼可能看起來有點混亂:

var zombies = new List<Zombie>(); 
zombies.KillZombies(15); 

在現實中,這是一種語法糖其中相當於:

public static void KillZombies(List<Zombie> zombiesToKill, 
           int numberOfBullets) 
{ 
    // Code here 
} 

調用代碼如下所示:

var zombies = new List<Zombie>(); 
KillZombies(zombies, 15); 
+0

它看起來像是當KillZombies被調用時,只有NumberOfBullets被傳遞。如果ZombiesToKill沒有作爲參數發送,通常定義在哪裏?我對代碼缺乏表示歉意,如果沒有任何上下文,這是不可能回答的,我明白。 – sooprise 2010-11-16 20:32:49

+0

@Soo - 我只是更新了我的答案,希望能夠解釋爲什麼你看到你是什麼。 – 2010-11-16 20:36:57

+0

非常好,非常感謝! – sooprise 2010-11-16 21:08:19

1

這是一個extension method

在這種情況下,延伸List<Zombie>。你會這樣稱呼它:

listOfZombies.KillZombies(numberOfBullets); 

listOfZombies類型是List<Zombie>numberOfBullets是一個整數。

+0

...你通過了我,但我正在回來! :-P – 2010-11-16 20:32:06

+0

@Justin Niessner - Hehehe ...比賽正在進行中:) – Oded 2010-11-16 20:33:01