由于我在这里提出的另一个问题,我想为我的对象使用 HashSet
我将创建包含字符串和对其所有者的引用的对象。
public class Synonym
{
private string name;
private Stock owner;
public Stock(string NameSynonym, Stock stock)
{
name=NameSynonym;
owner=stock
}
// [+ 'get' for 'name' and 'owner']
}
我知道我需要一个比较器,但以前从未使用过它。我应该创建一个单独的类吗?像:
public class SynonymComparer : IComparer<Synonym>
{
public int Compare(Synonym One, Synonym Two)
{ // Should I test if 'One == null' or 'Two == null' ????
return String.Compare(One.Name, Two.Name, true); // Caseinsesitive
}
}
我更喜欢有一个函数(或嵌套类[可能是单例?] 如果需要)作为类 Synonym 的一部分,而不是另一个(独立)类。这可能吗?
关于用法:因为我之前从未使用过这种东西,所以我想我必须在 Synonym 类中编写一个 Find(string NameSynonym) 函数,但我应该怎么做呢?
public class SynonymManager
{
private HashSet<SynonymComparer<Synonym>> ListOfSynonyms;
public SynonymManager()
{
ListOfSymnonyms = new HashSet<SynonymComparer<Synonym>>();
}
public void SomeFunction()
{ // Just a function to add 2 sysnonyms to 1 stock
Stock stock = GetStock("General Motors");
Synonym otherName = new Synonym("GM", stock);
ListOfSynonyms.Add(otherName);
Synonym otherName = new Synonym("Gen. Motors", stock);
ListOfSynonyms.Add(otherName);
}
public Synonym Find(string NameSynomym)
{
return ListOfSynonyms.??????(NameSynonym);
}
}
在上面的代码中,我不知道如何实现“查找”方法。我该怎么做?
任何帮助将不胜感激(PS如果我关于如何实施的想法完全错误,请告诉我并告诉我如何实施)