none
運算子的結合順序可以調整嗎? RRS feed

  • 問題

  • 最近遇到的問題, 不知道有沒有解決的方法, 為了方便提問, 我寫了下面的小程式:

    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 一樣?, 麻煩大家幫忙了, 謝謝!
    2012年7月13日 下午 01:19

解答

  • 這是優先權的問題 

    就我所知是不能被改變的


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度


    • 已編輯 Alex_Lee 2012年7月13日 下午 02:54
    • 已標示為解答 hyperon.tw 2012年7月14日 下午 01:40
    2012年7月13日 下午 02:53

所有回覆

  • 這是優先權的問題 

    就我所知是不能被改變的


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度


    • 已編輯 Alex_Lee 2012年7月13日 下午 02:54
    • 已標示為解答 hyperon.tw 2012年7月14日 下午 01:40
    2012年7月13日 下午 02:53
  • 謝謝! 看來只能放棄用"+=".........殘念呀
    2012年7月14日 下午 01:39