CS0535 C#未实现接口成员
我在编写排序方法时遇到了一个小问题,它应该通过CS0535 C#未实现接口成员,c#,list,C#,List,我在编写排序方法时遇到了一个小问题,它应该通过obliczene()方法对列表listaFarb进行排序 下面是我为类Farba、类MagazynFarb、类FarbaSpecjalna和带有Main()的程序编写的代码 您可以使用fromLinq进行自定义排序,如: public void Sortuj() { listaFarb = listaFarb.OrderBy( farba => farba.ObliczCene()).ToList();
obliczene()
方法对列表listaFarb
进行排序
下面是我为类Farba
、类MagazynFarb
、类FarbaSpecjalna
和带有Main()的程序编写的代码
您可以使用fromLinq
进行自定义排序,如:
public void Sortuj()
{
listaFarb = listaFarb.OrderBy( farba => farba.ObliczCene()).ToList();
}
更新:如果必须使用List.Sort()
,则需要使用Farba
类来实现IComparable
,并在CompareTo
方法中比较obliczene()
:
[Serializable]
public class Farba : IComparable<Farba>
{
...
public int CompareTo(Farba other)
{
return ObliczCene().CompareTo(other.ObliczCene());
}
[可序列化]
公共类Farba:i可比较
{
...
公共内部比较(法尔巴其他)
{
返回ObliczCene().CompareTo(other.ObliczCene());
}
那么,问题是什么呢?欢迎来到StackOverflow。您已经展示了很多代码,其中大部分与排序无关。请提供一个。谢谢,但我必须使用IComparable并将Sortuj()方法添加到MagazynFarb类中。它不能以不同的方式出现:(元素“Farba”出现错误)未实现接口“IComparable,MagazynFarb>.CompareTo(MagazynFarb)”的组件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PowtorkaFarba
{
public enum Typy { lateksowa, winylowa}
public class FarbaSpecjalna:Farba
{
double cenaSpecjalna;
Typy typ;
public FarbaSpecjalna(string producent, Kolory kolor, string dataWaznosci,Typy typ):base(producent,kolor,dataWaznosci)
{
Typ = typ;
Random r = new Random();
CenaSpecjalna = Math.Round(r.NextDouble()*(5.00-3.00)+3.00, 2);
}
public double CenaSpecjalna { get => cenaSpecjalna; set => cenaSpecjalna = value; }
internal Typy Typ { get => typ; set => typ = value; }
public override double ObliczCene()
{
return base.ObliczCene()+CenaSpecjalna;
}
public override double SprawdzDateWaznosci()
{
int iloscDniPowyzejTerminu = (DateTime.Now - DataWaznosci).Days;
double cena = ObliczCene() - ObliczCene() * 0.01 * iloscDniPowyzejTerminu;
if ((DateTime.Now - DataWaznosci).Days > 0)
{
if (cena < CenaPodstawowa)
{
throw new CenaMinimalnaException();
}
return cena;
}
else
{
return ObliczCene();
}
}
public override string ToString()
{
return base.ToString()+$"Typ: {Typ}";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PowtorkaFarba
{
class Program
{
static void Main(string[] args)
{
try
{
Farba f1 = new Farba("Dekoral", Kolory.Biala, "2020-05-09");
Farba f2 = new Farba("Dulux", Kolory.Niebieska, "2021-09-11");
Farba f3 = new Farba("Dulux", Kolory.Zielona, "2019-12-10");
//Console.WriteLine(f1);
//Console.WriteLine(f2);
//Console.WriteLine(f3);
//f1.SprawdzDateWaznosci();
//Console.WriteLine(f1);
//Console.WriteLine("Ilosc dni powyzej terminu: " + (DateTime.Now - f3.DataWaznosci).Days);
//Console.WriteLine("Oblicz cenę:" + f3.ObliczCene());
//Console.WriteLine(f3);
//FARBA SPECJALNA
FarbaSpecjalna fs1 = new FarbaSpecjalna("Dekoral", Kolory.Biala, "2019-12-09", Typy.lateksowa);
//Console.WriteLine("Oblicz cenę:" + fs1.ObliczCene());
//Console.WriteLine("Cena specjalna: " + fs1.CenaSpecjalna);
//Console.WriteLine(fs1);
MagazynFarb magazyn = new MagazynFarb("Magazyn 1");
magazyn.DodajFarbe(f1);
magazyn.DodajFarbe(f2);
magazyn.DodajFarbe(f3);
Console.WriteLine(magazyn);
//magazyn.UsunPrzedatowane(6);
//Console.WriteLine(magazyn);
foreach (Farba f in magazyn.ZnajdzFarby(Kolory.Niebieska))
{
Console.WriteLine("ZNAJDZ FARBY\n" + f);
}
Console.WriteLine("Wartość magazynu:\n" + magazyn.WartoscMagazynu());
Console.WriteLine("======================================================");
magazyn.Zapisz("magazyn.bin");
MagazynFarb magazyn2 = (MagazynFarb)magazyn.Odczytaj("magazyn.bin");
Console.WriteLine(magazyn2);
}
catch (WrongPriceException)
{
Console.WriteLine("Błędna cena");
}
catch(CenaMinimalnaException)
{
Console.WriteLine("Cena minimalna - wyjątek");
}
}
}
}
public void Sortuj()
{
listaFarb = listaFarb.OrderBy( farba => farba.ObliczCene()).ToList();
}
[Serializable]
public class Farba : IComparable<Farba>
{
...
public int CompareTo(Farba other)
{
return ObliczCene().CompareTo(other.ObliczCene());
}