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.