これは作業コードです:
static class Global
{
private static Dictionary<string, int> emails_compsIDs;
private static Dictionary<string, int> set_emails_compsIDs { set { emails_compsIDs = value; } }
private static DataTable MultiCompReport;
static Global()
{
string e = string.Empty;
Dictionary<string, int> emails_compsIDs = new Dictionary<string, int>();
DataTable t = MySql.ExecuteSelect("SELECT Email, Company_ID FROM potencial_contact WHERE Email != '' AND Email IS NOT NULL");
foreach (DataRow r in t.Rows)
{
int comp_id = Convert.ToInt32(r["Company_ID"]);
e = r["Email"].ToString().Replace("\r", "").Replace("\t", "").Replace("\n", "").Trim().ToLower().Trim();
if (!string.IsNullOrWhiteSpace(e) && !emails_compsIDs.ContainsKey(e))
{
try
{
emails_compsIDs.Add(e, comp_id);
}
catch (Exception ex)
{
throw ex;
}
}
}
if (emails_compsIDs.ContainsKey("linda@andatrade.com"))
Console.WriteLine("Eureka");
set_emails_compsIDs = emails_compsIDs;
}
}
しかし、emails_compsIDs = new Dictionary<string, int>();
コンストラクターで辞書を初期化するためだけに行ったとき、コードは最初の行だけを埋めました。ctor を無効にしてインスタンスを作成し、結果を静的辞書に入れると、すべての行が埋められました。