J'ai une référence de classe. Lorsque vous créez un objet dans la classe, il vérifie que les chaînes d'entrée sont uniques (et n'autorise donc jamais les objets en double). Mais quand je trouve que la chaîne d'entrée str1 est égale à celle d'un objet précédemment créé, au lieu de créer un nouvel objet ou de simplement retourner false, je veux changer une propriété de l'objet déjà créé. Mais je ne peux pas comprendre comment faire cela, car la méthode n'a aucun moyen de connaître le nom de l'objet. Mais je sais quelque chose d'unique à ce sujet! Je me sens comme cela doit être assez pour en quelque sorte l'appeler, et faire ce que je dois faire.C# appeler l'objet par la propriété unique
Des idées?
MERCI!
Voici la classe:
public class Referral
{
public class Referral
{
public string URL;
public Dictionary<string, int> Keywords = new Dictionary<string, int>();
private static Dictionary<string, string> URLs = new Dictionary<string, string>();
private int HowManyURLs;
private bool UniqueURL;
private bool UniqueKeyword;
public Referral(string MyURL, string MyKeyword, int MyOccurrences) //Constructor
{
if (HowManyURLs == 0)
{
URL = MyURL;
Keywords.Add(MyKeyword, MyOccurrences);
URLs.Add(MyURL, MyKeyword);
HowManyURLs++;
}
else
{
// RESET FLAGS
UniqueURL = true;
UniqueKeyword = true;
for (int i = 0; i < HowManyURLs; i++)
{
if (URLs.ContainsKey(MyURL))
{
// TRIP URL FLAG
UniqueURL = false;
// NOW CHECK KEYWORDS OF URL << THIS IS WHAT I CAN'T DO!
if (URLs.ContainsKey(MyKeyword))
{
// TRIP KEYWORD FLAG
UniqueKeyword = false;
// ADD TO OCCURRENCES
// Referral[MyURL].Occurrences += MyOccurrences;
}
}
}
// IF BOTH FLAGS TRUE
if (UniqueURL == true && UniqueKeyword == true)
{
URL = MyURL;
Keywords.Add(MyKeyword, MyOccurrences);
URLs.Add(MyURL, MyKeyword);
HowManyURLs++;
}
}
}
}
Je suis un peu confus au sujet de ce que vous essayez de faire quand il s'agit à la fois de votre question et de votre code. Pour une chose, ce n'est pas une méthode, c'est un constructeur donc retourner false n'est pas une option et ne pas créer une nouvelle référence n'est pas une option. Votre boucle for apparaît également effectuer les mêmes contrôles chaque fois à travers la boucle sans aucun changement. Est-ce que votre seconde devrait être: if (Keywords.ContainsKey (MyKeyword)) ? – drs9222