2017-02-14 59 views
2

在这里我无法用foreach如何写用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]'到你的''''''''''Type'的内部演员。换句话说,你的'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#的新手, –