2017-02-05 1 views
0

Например, у меня есть класс с именем «Дерева» с двумя частными переменнымКак получить значение объектов в словаре <String (объект)>

public class Tree() 
    { 
     private string name; 
     private int age; 

     public void Tree(string s, int x) 
     { 
     //simply make an object. 
     } 


    } 

Я создаю объект из другого класса, делая словарь существа

Dictionary<string, Tree> family = new Dictionary<string, Tree>; 

Строка будет ссылаться на Ник, и Дерево будет содержать человека, которому оно принадлежит. (один человек за прозвище). Скажем, у словаря есть ключ от «Vats», а Tree, принадлежащее «Vats», имеет имя = Dan и возраст = 18. Если я хочу получить имя и возраст, как бы я продолжал об этом, потому что я уверен, что могу «т сделать:

"Военную"= nickN

string a = family.TryGetValue[nickN].name; 
int x = family.TryGetValue[nickN].age; 

какие-нибудь мысли?

+2

Что случилось с Family [lastN] .name (если yo u сделать открытые поля дерева)? – Lucero

+0

Так много синтаксической ошибки – pinkfloydx33

+0

не будет ли он просто возвращать объект Tree? – MichaelT

ответ

2
Tree tree = null; 
if(family.TryGetValue(lastName, out tree)) 
{ 
    var fName = tree.Name; 
    var age = tree.Age; 
} 
+0

Почему имя вместо имени? – MichaelT

+0

Имя; не важно – Moho

1

Если вы, конечно, знаете, что деталь вы хотите получить доступ к действительно существует в словаре, вы можете использовать прямой синтаксис доступа с помощью квадратных скобок вместо использования TryGetValue.

string a = family[nickN].name; 
int x = family[nickN].age; 

Для того, чтобы получить доступ к частным поля name и age из-за пределов Tree класса, сделать их достоянием общественности или создать общие свойства для доступа к ним, как это:

public class Tree() 
{ 
    private string name; 
    private int age; 

    public void Tree(string s, int x) 
    { 
     name = s; 
     age = x; 
    } 

    public string Name{ get{ return name; }} 
    public int Age{ get{ return age; }} 
} 

Затем вы можете использовать :

string a = family[nickN].Name; 
int x = family[nickN].Age; 

 Смежные вопросы

  • Нет связанных вопросов^_^