class Program
{
class Product : IComparable
{
public string Name { get; set; }
public int Price { get; set; }
public override string ToString()
{
return Name + " : " + Price + "원";
}
public int CompareTo(object obj)
{
return this.Price.CompareTo((obj as Product).Price);
}
}
static void Main(string[] args)
{
List<Product> list = new List<Product>()
{
new Product() {Name = "고구마", Price = 1500 },
new Product() {Name = "사과", Price = 2400 },
new Product() {Name = "바나나", Price = 1000 },
new Product() {Name = "배", Price = 3000 }
};
list.Sort();
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
Console.WriteLine(item);
이게 실행되면
어떻게 ToString() 메소드가 호출이 되는거임?? 호출한적이 없는데
해당 댓글은 삭제되었습니다.
이게 맞다 C#은 내부적으로 모두 Object 클래스를 상속받는다고 보면 되는데 그 클래스에 ToString 함수가 가상으로 선언되어 있음. 니가 선언한 함수는 그걸 오버라이드 하는거임.. 비슷한 함수로 Equal같은것도 있음
세상 참 좋아졌구나... 답변이 100점 만점이네... 나 때는 질문해도 답변 기다리는데 한참 걸려서 걍 디버깅 삽질하면서 혼자 알아냈었는데...