C#
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication6
{
class Item
{
public DateTime DateTimeField;
public string StringField;
public int IntField;
public Item(DateTime d, string s, int i)
{
DateTimeField = d;
StringField = s;
IntField = i;
}
}
class ItemEqualityComparer : IEqualityComparer<Item>
{
#region IEqualityComparer<Item> 멤버
public bool Equals(Item x, Item y)
{
return x.DateTimeField.Equals(y.DateTimeField) &&
x.StringField.Equals(y.StringField) &&
x.IntField.Equals(y.IntField);
}
public int GetHashCode(Item obj)
{
return obj.DateTimeField.GetHashCode() * obj.StringField.GetHashCode() * obj.IntField.GetHashCode();
}
#endregion
}
class Program
{
static void Main(string[] args)
{
IDictionary<Item, int> stats = new Dictionary<Item, int>(new ItemEqualityComparer());
stats[new Item(new DateTime(2020, 3, 5), "Qoo", 10)] = 1;
stats[new Item(new DateTime(2020, 3, 6), "Qoo", 10)] = 2;
stats[new Item(new DateTime(2020, 3, 7), "Qoo", 13)] = 3;
stats[new Item(new DateTime(2020, 3, 8), "Qoo", 10)] = 4;
stats[new Item(new DateTime(2020, 3, 8), "Navi", 10)] = 5;
Print(stats);
stats[new Item(new DateTime(2020, 3, 8), "Navi", 10)] += 100;
Print(stats);
}
static void Print(IDictionary<Item, int> stats)
{
foreach (KeyValuePair<Item, int> pair in stats)
Console.WriteLine(
pair.Key.DateTimeField.ToString() + " " + pair.Key.StringField + " " +
pair.Key.IntField.ToString() + " : " + pair.Value);
Console.WriteLine("----");
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication6
{
class Item
{
public DateTime DateTimeField;
public string StringField;
public int IntField;
public Item(DateTime d, string s, int i)
{
DateTimeField = d;
StringField = s;
IntField = i;
}
}
class ItemEqualityComparer : IEqualityComparer<Item>
{
#region IEqualityComparer<Item> 멤버
public bool Equals(Item x, Item y)
{
return x.DateTimeField.Equals(y.DateTimeField) &&
x.StringField.Equals(y.StringField) &&
x.IntField.Equals(y.IntField);
}
public int GetHashCode(Item obj)
{
return obj.DateTimeField.GetHashCode() * obj.StringField.GetHashCode() * obj.IntField.GetHashCode();
}
#endregion
}
class Program
{
static void Main(string[] args)
{
IDictionary<Item, int> stats = new Dictionary<Item, int>(new ItemEqualityComparer());
stats[new Item(new DateTime(2020, 3, 5), "Qoo", 10)] = 1;
stats[new Item(new DateTime(2020, 3, 6), "Qoo", 10)] = 2;
stats[new Item(new DateTime(2020, 3, 7), "Qoo", 13)] = 3;
stats[new Item(new DateTime(2020, 3, 8), "Qoo", 10)] = 4;
stats[new Item(new DateTime(2020, 3, 8), "Navi", 10)] = 5;
Print(stats);
stats[new Item(new DateTime(2020, 3, 8), "Navi", 10)] += 100;
Print(stats);
}
static void Print(IDictionary<Item, int> stats)
{
foreach (KeyValuePair<Item, int> pair in stats)
Console.WriteLine(
pair.Key.DateTimeField.ToString() + " " + pair.Key.StringField + " " +
pair.Key.IntField.ToString() + " : " + pair.Value);
Console.WriteLine("----");
}
}
}




덧글
merius 2007/08/11 02:13 # 삭제 답글
C#은 멤버 함수 첫글자를 대문자로 하나보네...