私は参照クラスを持っています。クラス内にオブジェクトを作成すると、入力文字列が一意であることがチェックされます(したがって、重複するオブジェクトは決して許可されません)。しかし、入力文字列str1が以前に作成されたオブジェクトのものと等しいとわかった場合、新しいオブジェクトを作成するかfalseを返すのではなく、すでに作成されたオブジェクトのプロパティを変更したい。しかし、メソッドはオブジェクトの名前を知る方法がないので、私はこれを行う方法を把握することはできません。しかし私はそれについて独特の何かを知っている!私はこれが十二分ににする必要があるように感じるそれを呼び出すと、私は何をする必要があります。C#固有のプロパティでオブジェクトを呼び出す
アイデア?
ありがとうございました!ここで
クラスです:
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++;
}
}
}
}
私はあなたの質問とあなたのコードの両方に関して何をしようとしているのか少し混乱しています。 これはコンストラクタではありませんが、falseを返すことはオプションではなく、新しいReferralを作成しないことはオプションではありません。 また、あなたのforループが表示されても、ループを繰り返すたびに同じチェックが行われます。 2番目の場合: if(Keywords.ContainsKey(MyKeyword)) ? – drs9222