2013-11-13 4 views
-1

Код:доступа классы свойство объекта класса

public class ClassA 
{ 
     public decimal foo 
} 

public class ClassB 
{ 
    public List<ClassA> Alist 
} 

внутри ClassB Я заселение значения ALIST как так.

 foreach (junk in trash) 
     {    
      Alist.add(new ClassA() 
      {     
       foo = junk.Bar 
      });  
      // if (Alist.foo == whatever) 
      // but no access to Alist.foo here 
     } 

Внутри каждого цикла я пытаюсь запустить оператор if против foo. Так что-то вроде if (Alist.foo == whatever) Я не могу этого сделать, это не дает мне доступ к Alist.foo. Любая идея, как это будет сделано.

+2

Ваш синтаксис, как показано, не может быть скомпилирован. Попробуйте опубликовать реальный код или, по крайней мере, код, который будет работать ... –

+0

Да, я оставил некоторые вещи, но это общая идея моего вопроса. Нужно ли вместо этого использовать цикл for? Если это так, я должен буду делать то, что хочу – CSharper

+0

Трудно сказать, но вы можете искать индексатора, как в 'Alist [0] .foo', но так как код неполный, я не уверен , – christiandev

ответ

3

Проблема в том, что у вас нет ссылки на объект, который вы только что добавили. Есть много способов получить это. Я собираюсь рекомендовать вам просто построить объект за пределами Add.

var newA = new ClassA() 
{     
    foo = junk.Bar 
}; 

// now you can perform the if statement 
if (newA.foo == someValue) 
{ 
    // do something 
} 

Alist.add(newA); 
+0

Я могу получить доступ, используя 'junk.foo 'внутри моего foreach, что вы думаете об этом? – CSharper

+1

@CSharper, вы говорите, просто получите доступ к значению' decimal' на 'junk' вместо этого для оператора' if'? Да, это еще один возможный подход. –

+1

да, это то, что мне нужно , Я думаю, что я просто получаю доступ к описанию, не должен быть проблемой – CSharper

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