2017-02-14 12 views
2

В здесь я не могу использовать foreach:Как написать массив структуры с Еогеасп в C#

`CS0030 Ошибка Не удается преобразовать тип«ConsoleApplication5._3.Struct.Sach»до«»междунар

Как это исправить?

public struct Sach 
{ 
    public string TenSach; 
    public string TacGia; 
    public string GioiThieu; 
    public int ID; 
    public void nhapdulieu(string q,string w, string e, int r) 
    { 
     TenSach = q; 
     TacGia = w; 
     GioiThieu = e; 
     ID = r; 
    } 
    public void Insach() 
    { 
     Console.Write($"Ten sach: {TenSach}\n"); 
     Console.Write($"Tac gia: {TacGia}\n"); 
     Console.Write($"Gioi thieu: {GioiThieu}\n"); 
     Console.Write($"Ma sach: {ID}\n"); 
    } 
}; 


public class QuanLySach 
{ 
    public static void NhapSach() 
    { 

     Sach[] sach1 = new Sach[4]; 
     for(int i=0;i<4;i++) 
     { 
      Console.WriteLine("nhap ten sach, tac gia, gioi thieu, id:"); 
      sach1[i].TenSach = Console.ReadLine(); 
      sach1[i].TacGia = Console.ReadLine(); 
      sach1[i].GioiThieu = Console.ReadLine(); 
      var vv = Console.ReadLine(); 
      Int32.TryParse(vv, out sach1[i].ID); 
     } 

     foreach(int bb in sach1) 
     { 
     // in here i cant use foreach but i dont know why? 
     } 
     Console.ReadLine(); 
    } 
    } 
} 
+0

цикл 'foreach' содержит внутреннее вложение' Collection [index] 'в' '' '' '' вашего 'объекта'. другими словами, ваш 'foreach (int bb in sach1)' сообщает компилятору, что каждый элемент 'sach1' является int, а это не так. вот почему вы получаете ошибку. я предлагаю вам прочитать эту книгу https://www.amazon.com/Exam-Ref-70-483-Programming-MCSD/dp/0735676828 – Niklas

ответ

2

Вы используете foreach неправильно. Цикл Foreach будет итерировать последовательность прохода, и ваш bb должен быть того же типа, что и базовый тип для этой последовательности. В вашем случае это должно быть:

foreach(Sach bb in sach1) 
{ 
    // in here i cant use foreach but i dont know why? 
} 
+1

Кроме того, будьте осторожны, вы можете читать данные только с bb. не пишите. – bwoogie

+0

@bwoogie Точно, ему нужно будет генерировать новую коллекцию 'Sach', если только он не хочет обновлять только поля' bb', и он не хочет менять 'sach1'. – kat1330

+0

спасибо за все XD, я новичок в C#, –