【发布时间】:2021-12-31 10:23:33
【问题描述】:
我收到以下错误信息:
BubbleSort(säljare);
错误 CS0315 类型“Inlämingsuppgift2ConsoleApplication.Program.Säljare”不能用作泛型类型或方法“BubbleSort
(Säljare[])”中的类型参数“Säljare”。没有从“Inlämingsuppgift2ConsoleApplication.Program.Säljare”到“System.IComparable”的装箱转换。
我尝试了其他解决方案并收到相同的错误代码。
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.");
}
}
}
}
【问题讨论】:
-
你的结构
Säljare没有实现System.IComparable<Säljare>接口。您可能对 BubbleSort 方法的结构和类型参数使用相同的名称 (Säljare) 感到困惑。考虑将 T 用于类型参数:BubbleSort<T>,将方法设为静态并将其移出Main方法。
标签: c# visual-studio generics compiler-errors