며칠 전 C#으로 프로그래밍을 시작했습니다.연산자 오버로드로 인해 스택 오버플로가 발생합니다.
이제 연산자 오버로딩으로 놀 때 혼란스러운 오류가 발생했습니다.
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));
}
}
}
내가 더크 루이스와 Shinja에서 책 "에서는 Microsoft Visual C# 2008"에서 오버로드 OPERATOR 시스템에 대한 장을 읽은 후 자신의 예를 작성했습니다 : 실행할 때
는다음 코드는 있는 StackOverflowException을 생산 Strasser.
어쩌면 누군가가 잘못 될지 알 수 있습니다.
감사합니다.
을 오류는 어디에서 발생합니까? –
당신의 Main은 Operators 클래스 안에 있습니다. 당신이 의도적으로하고 싶은 것입니까? –
그냥 궁금해서 ... 왜 받아 들여지는 대답이 광산에서 호기심 많은 괴짜로 바뀌 었습니까? 일반적인 규칙은 올바른 해결책을 제공 한 첫 번째 답변을 승인하는 것입니다. –