Podczas przechodzenia przez mój program metoda ToString () jest wywoływana bez powodu

To dziwaczny problem, który nawet mój starszy programista obok mnie jest zdezorientowany. Cały problem polega na tym, że w jakiś sposób jest mójToString() metoda jest wywoływana i nie wiem ani nie rozumiem, jak to jest mój kod

static void Main(string[] args)
{
    Console.Out.WriteLine("Blank Constructor");
    Form form = new Form(); <-- ToString() gets called on this line.
    form.ToString();

    Console.Read();
 }

public Form()
{
    FormName = "";
    FormImageLocation = "";
    FormDescription = "";

    FormID = 0;

    CreatedDate = DateTime.Now;
    LastUpdate = DateTime.Now;

    Fields = new List<Field>();
    Packets = new List<Packet>(); <-- This line in the constructor
}

public override string ToString()
{
    string returnString;
    returnString = " Form Name: " +  FormName + " Form Image Location: " + FormImageLocation + "Form     Description: " + FormDescription + " FormID: " + FormID  + " Created Date: " + CreatedDate + "           LastUpdate: " + LastUpdate ;

    if (fields.Count != 0)
    {
        foreach (var field in fields)
        {
            returnString += field.ToString();
        }
    }
    else
    {
        returnString += "!!! This Form has no Fields !!!";
    }

    if (Packets.Count != 0)
    {
        foreach (var packet in Packets)
        {
            returnString += packet.ToString();
        }
    }
    else
    {
        returnString += " !!! This Form does not belong to any Packets !!!";
    }

    Console.Out.WriteLine(returnString);
    return returnString;
}

public Packet(string packet_name, List<Form> list_of_forms)
{
    PacketName = packet_name;
    forms = list_of_forms;
}

Ten pozornie przypadkowy nawrótToString() drukowanie TYLKO występuje, gdy przechodzę przez program. będzie drukować na linii, którą wskazałem powyżej, a także gdy konstruktor wychodzi i drukuje jak szalony, gdy przechodzę przezToString() sama metoda. Umieściłem punkt przerwania wToString() ale zatrzyma się tylko na punkcie przerwania, gdyToString() jest legalnie wywoływany, aby było jasne, kiedy przechodzę i robi to losowe drukowanie, nie zatrzyma się na punktach przerwania w obrębieToString(). Przeszedłem i usunąłem wszystkie połączenia doToString() i nadal jest losowo wywoływany, gdy komentowałemreturnString zmienna i właśnie zwróciłem „tam” problem zniknął, ale to nic nie pomaga. jeśli uruchomię program bez punktów przerwania, ten problem nie występuje. niektórzy z was mogą powiedzieć, że jeśli działa, gdy działa, to nie ma znaczenia, ale sprawia, że ​​jestem bardzo ostrożny, jeśli napotkam problem z kodem w dół drogi i spróbuję przejść przez kod, aby znaleźć problem, otrzymam różne wyniki i utrudniać debugowanie. Próbowałem omówić cały problem i to, co próbowałem, i dostarczyć cały potrzebny kod, jeśli nie miałem pewności co do czegoś, daj mi znać, a spróbuję to wyjaśnić ponownie. wreszcie jestem na komputerze z systemem Windows 7 64 bit i używam Visual Studio C # 2010 Express.

questionAnswers(5)

yourAnswerToTheQuestion