最近遇到的問題, 不知道有沒有解決的方法, 為了方便提問, 我寫了下面的小程式:
class Program
{
static void Main(string[] args)
{
OPExperiment Str1 = "", Str2 = "";
Str1 += "Experiment 1: " + 5 + "+" + 5 + "=" + 10 + ". Is It true? " + true;
Str2 = Str2 + "Experiment 2: " + 5 + "+" + 5 + "=" + 10 + ". Is It true? " + true;
System.Console.WriteLine(Str1.ToString());
System.Console.WriteLine(Str2.ToString());
System.Console.ReadLine();
}
}
public class OPExperiment
{
private System.Text.StringBuilder Builder;
public OPExperiment()
{
}
public OPExperiment(string Value)
{
this.Builder = new System.Text.StringBuilder(Value, 128);
}
public static implicit operator OPExperiment(string Right)
{
return new OPExperiment(Right);
}
public static OPExperiment operator +(OPExperiment Left, bool Right)
{
Left.Builder.Append(Right);
return Left;
}
public static OPExperiment operator +(OPExperiment Left, int Right)
{
Left.Builder.Append(Right);
return Left;
}
public static OPExperiment operator +(OPExperiment Left, string Right)
{
Left.Builder.Append(Right);
return Left;
}
public override string ToString()
{
return this.Builder.ToString();
}
}
輸出的結果是一樣的, 但是"+"的結合順序不同, Str1 的部分是字串先合併後再執行 +(OPExperiment Left, string Right), Str2 的部分則會依序執行定義好的"+", 不知道有沒有方法調整結合順序, 讓 Str1 的"+"順序與 Str2 一樣?, 麻煩大家幫忙了, 謝謝!