Добро пожаловать в Stackoverflow. Пожалуйста, внимательно прочитайте ваш код. В методе Main
вы создаете новый объект Movie
(назовем его movieA
) и добавляем новый объект Show
в movieA
. В классе Access
вы не используете MovieA
, но вы снова создаете новый объект Movie
. Если вы хотите получить доступ к Movie
, созданному в методе Main
, в классе Access
, вы должны передать его туда.
public static void Main(string[] args)
{
// create new object of Show type
Show s = new Show(153, 258, 391);
Movie movieA = new Movie();
// add object to List
movieA.Shows.Add(s);
// The output gives me 153, which is correct
Console.WriteLine(movieA.Shows.ElementAt(0).ShowID);
var access = new Access();
access.MyMethod(movieA);
}
public class Access
{
public void MyMethod(Movie movie)
{
// this should work
Console.WriteLine(movie.Shows.ElementAt(0).ShowID);
}
}
Это - классический случай двойного выхода, где и удар и CMD.EXE должны быть проинструктированы для игнорирования специального предложения | (канал) символ.
Попробуйте следующее:
$command $args "qt.sln" /BUILD '"Debug|Win32"'
Это будет эквивалентом Вас ввод при подсказке CMD.EXE:
qtvars.bat vsstart qt.sln /BUILD "Debug|Win32"
Используя вышеупомянутое, Вы по существу вызываете передачу двойных кавычек на CMD.EXE (вместо удара, съедающего их.) Наиболее удаленные одинарные кавычки дают удару команду не интерпретировать или касаться всегда, что в них; внутренние двойные кавычки дают команду CMD.EXE игнорировать любые специальные символы (канал в этом случае) в.
С другой стороны, можно также попробовать:
$command $args "qt.sln" /BUILD 'Debug\|Win32'
Это должно быть эквивалентом Вас ввод при подсказке CMD.EXE:
qtvars.bat vsstart qt.sln /BUILD Debug\|Win32
Отметьте использование одинарных кавычек (!), которые гарантируют, что удар не интерпретирует \(и, вместо этого, передаст его как есть CMD.EXE.)
Интересный! Что делает выход |
?
Они работают?