Ho iniziato a programmare con C# alcuni giorni fa.L'overloading dell'operatore provoca un overflow dello stack
Ora si è verificato un errore di confusione quando si gioca con il sovraccarico dell'operatore.
Il seguente codice produce un StackOverflowException durante l'esecuzione:
using System;
namespace OperatorOverloading
{
public class Operators
{
// Properties
public string text
{
get
{
return text;
}
set
{
if(value != null)
text = value;
else
text = "";
}
}
// Constructors
public Operators() : this("")
{
}
public Operators(string text)
{
// Use "set" property.
this.text = text;
}
// Methods
public override string ToString()
{
return text;
}
// Operator Overloading
public static string operator +(Operators lhs, Operators rhs)
{
// Uses properties of the passed arguments.
return lhs.text + rhs.text;
}
public static void Main(string[] args)
{
Operators o1 = new Operators();
Operators o2 = new Operators("a");
Operators o3 = new Operators("b");
Console.WriteLine("o1: " + o1);
Console.WriteLine("o2: " + o2);
Console.WriteLine("o3: " + o3);
Console.WriteLine();
Console.WriteLine("o1 + o2: " + (o1 + o2));
Console.WriteLine("o2 + o3: " + (o2 + o3));
}
}
}
ho provato a scrivere un proprio esempio dopo aver letto il capitolo sul operater sovraccaricare dal libro "Microsoft Visual C# 2008" da Dirk Louis e Shinja Strasser.
Forse qualcuno ha la più pallida idea di cosa non va.
Grazie.
dove si verifica l'errore? –
il tuo Main è all'interno della classe Operators, è qualcosa che volevi fare di proposito? –
Solo curioso ... perché la risposta accettata cambia dal mio al curioso geek? Le regole generali indicano la prima risposta che ha fornito una soluzione operativa come accettata. –