2015-12-03 34 views
-2

找到一個特定的對象所以我試圖做一些類似於你如何在JavaScript中做到這一點的getElementByIdC#通過搜索其變量

我想要做這樣的事情:

class Animal 
{ 
    string id; 
} 

public Animal Zebra = new Animal(); 
Zebra.id = "abc"; 

//and then get it like this 
var foo = getAnimalId("abc"); 

並返回斑馬。任何方式來做到這一點?謝謝

+2

從那裏得到它?這是在一個動物列表?一個asp頁面上的元素? – Sayse

+0

使用一個'Dictionary ',其中的關鍵是ID。然後你可以得到它:'動物一個; dict.TryGetValue(「abc」,out a);' –

回答

0

這個問題很模糊,所以很難理解你需要什麼樣的幫助。但我會盡力給你一個答案。

首先,您必須將動物存儲在列表中。

public List<Animal> _animals = new List<Animal>(); 

而當您創建動物時,您必須將它們添加到列表中。

Animal zebra = new Animal(); 
zebra.id = "abc"; 

_animals.Add(zebra); 

然後,您可以檢查是否有ID abc動物存在這樣的:

if(_animals.Any(a => a.id == "abc")) 

,並得到這樣的動物:

Animal animal = _animals.FirstOrDefault(a => a.id == "abc"); 

List.FirstOrDefault()可以讓你得到的第一個動物匹配id,如果不存在,則返回null

2

使用密鑰爲ID的Dictionary<string, Animal>。然後,你可以用Dictionary<TKey, TValue>.TryGetValue得到它:

var animalIDs = new Dictionary<string, Animal>(); 
animalIDs.Add(Zebra.id, Zebra); 

// ....

Animal animal; 
bool containsAnimalID = animalIDs.TryGetValue("abc", out animal); 
if(containsAnimalID) 
{ 
    // do something with the zebra ... 
} 
+0

根據對象的不同,最好使用'object',或者甚至可以使用'Control'而不是'Animal'。如果他們想要類似於getElementById的東西來獲取對錶單上的控件的引用,那麼最好使用一些不太特定類型的東西。但這只是我的猜測/假設。 – gmiley

+0

@gmiley:這只是一個例子,而不是'Animal'(它已經看起來像是一個基類),他也可以使用'Control'或其他。這個想法應該清楚,關鍵是ID和對象的價值。允許「對象」作爲價值似乎過於慷慨。 –