Tôi bắt đầu lập trình với C# cách đây vài ngày.Quá tải nhà khai thác gây ra tràn ngăn xếp
Bây giờ, một lỗi gây nhầm lẫn phát sinh khi phát xung quanh với quá tải toán tử.
Các mã sau đây tạo ra một StackOverflowException khi chạy:
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));
}
}
}
Tôi cố gắng để viết một ví dụ riêng sau khi đọc chương về operater quá tải từ cuốn sách "Microsoft Visual C# 2008" từ Dirk Louis và Shinja Strasser.
Có thể ai đó có manh mối về sự cố.
Cảm ơn.
lỗi xảy ra ở đâu? –
Main của bạn nằm trong lớp Operators, có phải là thứ bạn muốn thực hiện không? –
Chỉ tò mò ... tại sao câu trả lời được chấp nhận thay đổi từ tôi thành đam mê của geek? Các quy tắc chung là đánh dấu câu trả lời đầu tiên cung cấp một giải pháp làm việc như được chấp nhận. –