我在線上收到以下錯誤訊息:
BubbleSort(s?ljare);
錯誤 CS0315 型別“Inl?mingsuppgift2ConsoleApplication.Program.S?ljare”不能用作泛型型別或方法“BubbleSort<S?ljare>(S?ljare[])”中的型別引數“S?ljare”。沒有從“Inl?mingsuppgift2ConsoleApplication.Program.S?ljare”到“System.IComparable<Inl?mingsuppgift2ConsoleApplication.Program.S?ljare>”的拳擊轉換。
我嘗試了其他解決方案并收到相同的錯誤代碼。
namespace Inl?mingsuppgift2ConsoleApplication
{
class Program
{
struct S?ljare
{
public String Namn;
public String Personnummer;
public String Distrikt;
public int AntalS?ldaArtiklar;
}
[STAThread]
static void Main(string[] args)
{
System.Console.Write("Hur m?nga s?ljare vill du registrera?:");
string antalS?ljare = System.Console.ReadLine();
System.Console.WriteLine("Registrera s?ljare:");
int Antals?ljare = int.Parse(antalS?ljare);
S?ljare[] s?ljare = new S?ljare[Antals?ljare];
int niv?1 = 0;
int niv?2 = 0;
int niv?3 = 0;
int niv?4 = 0;
void BubbleSort<S?ljare>(S?ljare[] list) where S?ljare : IComparable<S?ljare>
{
for (int i = 0; i < list.Length - 1; i )
{
for (int j = 0; j < list.Length - 1 - i; j )
{
if (list[j].CompareTo(list[j - 1]) < 0)
{
S?ljare tmp = list[j 1];
list[j 1] = list[j];
list[j] = tmp;
}
}
}
}
for (int i = 0; i < Antals?ljare; i )
{
System.Console.Write(" Ange Namn: ");
s?ljare[i].Namn = System.Console.ReadLine();
System.Console.Write(" Ange Personnummer: ");
s?ljare[i].Personnummer = System.Console.ReadLine();
System.Console.Write(" Ange Distrikt: ");
s?ljare[i].Distrikt = System.Console.ReadLine();
System.Console.Write(" Ange antal Artiklar: ");
s?ljare[i].AntalS?ldaArtiklar = int.Parse(System.Console.ReadLine());
Console.WriteLine("\n");
}
for (int j = 0; j < Antals?ljare; j )
{
if (s?ljare[j].AntalS?ldaArtiklar < 50)
{
niv?1 ;
}
else if (s?ljare[j].AntalS?ldaArtiklar >= 50 && s?ljare[j].AntalS?ldaArtiklar < 100)
{
niv?2 ;
}
else if (s?ljare[j].AntalS?ldaArtiklar >= 100 && s?ljare[j].AntalS?ldaArtiklar < 200)
{
niv?3 ;
}
else if (s?ljare[j].AntalS?ldaArtiklar > 200)
{
niv?4 ;
}
}
BubbleSort(s?ljare);
try
{
StreamWriter sw = new StreamWriter("C:\\Test.txt");
for (int i = 0; i < s?ljare.Length; i )
{
Console.WriteLine("\n");
Console.WriteLine("Namn: " s?ljare[i].Namn);
Console.WriteLine("Personnummer: " s?ljare[i].Personnummer);
Console.WriteLine("Distrikt: " s?ljare[i].Distrikt);
Console.WriteLine("Antal s?lj: " s?ljare[i].AntalS?ldaArtiklar);
sw.WriteLine("\n");
sw.WriteLine("Namn: " s?ljare[i].Namn);
sw.WriteLine("Personnummer: " s?ljare[i].Personnummer);
sw.WriteLine("Distrikt: " s?ljare[i].Distrikt);
sw.WriteLine("Antal s?lj: " s?ljare[i].AntalS?ldaArtiklar);
sw.WriteLine("\n");
sw.WriteLine("-----------------------------");
sw.WriteLine("\n Antal S?ljare p? niv? 1: " niv?1);
sw.WriteLine("Antal S?ljare p? niv? 2: " niv?2);
sw.WriteLine("Antal S?ljare p? niv? 3: " niv?3);
sw.WriteLine("Antal S?ljare p? niv? 4: " niv?4);
sw.WriteLine("\n -----------------------------");
Console.WriteLine("\n");
Console.WriteLine("-----------------------------");
Console.WriteLine("\n Antal S?ljare p? niv? 1: " niv?1);
Console.WriteLine("Antal S?ljare p? niv? 2: " niv?2);
Console.WriteLine("Antal S?ljare p? niv? 3: " niv?3);
Console.WriteLine("Antal S?ljare p? niv? 4: " niv?4);
Console.WriteLine("\n -----------------------------");
sw.Flush();
}
}
catch (Exception e)
{
Console.WriteLine("Exception: " e.Message);
}
finally
{
Console.WriteLine("Executing finally block.");
}
}
}
}
uj5u.com熱心網友回復:
您需要IComparable<S?ljare>在S?ljare. 您實作它的方式將控制資料的排序方式。
這是一個示例,它按“Namn”、“Personnummer”、“Disktrikt”和“AntalS?ldaArtiklar”排序,全部為 ASC,不區分大小寫。
struct S?ljare : IComparable<S?ljare>
{
public String Namn;
public String Personnummer;
public String Distrikt;
public int AntalS?ldaArtiklar;
public int CompareTo(S?ljare other)
{
var sc = StringComparison.OrdinalIgnoreCase;
var result = string.Compare(Namn, other.Namn, sc);
if (result != 0) return result;
result = string.Compare(Personnummer, other.Personnummer, sc);
if (result != 0) return result;
result = string.Compare(Distrikt, other.Distrikt, sc);
if (result != 0) return result;
return AntalS?ldaArtiklar - other.AntalS?ldaArtiklar;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/363407.html
