В верхней части файла класса я добавил класс:Почему я получаю ошибку, что переменная должна быть статичной?
public class World
{
public List<Continent> continents;
public World()
{
continents = new List<Continent>();
}
}
public class Continent
{
public string name;
public List<Country> countries { get; set; }
public Continent()
{
name = string.Empty;
countries = new List<Country>();
}
}
public class Country
{
public string name { get; set; }
public List<string> imageUrls { get; set; }
public Country()
{
name = string.Empty;
imageUrls = new List<string>();
}
}
При использовании его в Form1:
foreach (ExtractImages.Continent continent in ExtractImages.World.continents)
{
Console.WriteLine(continent.name);
foreach (ExtractImages.Country country in continent.countries)
{
Console.WriteLine(country.name);
foreach (string imageUri in country.imageUrls)
{
Console.WriteLine(imageUri);
}
}
}
я получаю ошибку в Form1 на:
ExtractImages.World.continents
На линии:
foreach (ExtractImages.Continent continent in ExtractImages.World.continents)
Тяжесть Код Описание проект Строки файла Подавление Государственного CS0120 Error Ссылка на объекте требуется для
Update Изменяется нестатические поля, метода или свойства «ExtractImages.World.continents»
Первого в файле класса я использую World перед его использованием в form1: Когда в Form1 я создаю новый экземпляр для World, он будет пустым.
public void ImagesLinks()
{
try
{
int counter = 0;
foreach (string countryCode in countriescodes)
{
Country country = new Country();
country.name = countriesnames[counter];
List<string> imageUrl = new List<string>();
counter++;
for (int cnt = 0; cnt < DatesAndTimes.Count(); cnt++)
{
string imageUrlIrTrue = firstUrlPart + countryCode + secondUrlPart + DatesAndTimes[cnt] + thirdUrlPart + "true";
string imageUrlIrFalse = firstUrlPart + countryCode + secondUrlPart + DatesAndTimes[cnt] + thirdUrlPart + "false";
imageUrl.Add(imageUrlIrTrue);
imageUrl.Add(imageUrlIrFalse);
if (cnt == 9)
{
cnt = 0;
break;
}
}
country.imageUrls = imageUrl;
Europe.countries.Add(country);
}
world.continents.Add(Europe);
}
Это в Form1 Сейчас:
ExtractImages.World world = new ExtractImages.World();
foreach (ExtractImages.Continent continent in world.continents)
{
Console.WriteLine(continent.name);
foreach (ExtractImages.Country country in continent.countries)
{
Console.WriteLine(country.name);
foreach (string imageUri in country.imageUrls)
{
Console.WriteLine(imageUri);
}
}
}
Вы называете его статическим объектом, если он не является статичным. – Abion47
Потому что вы используете его как статический класс. Вы не запрашиваете '.continents' в * экземпляре * типа. – Rob