String Format

class Program
    {
        static void Main(string[] args)
        {
            Vector v1 = new Vector(1, 32, 5);
            Vector v2 = new Vector(845.4,54.3,-7.8);
            Console.WriteLine("\nIn IJK format,\nv1 is {0,30:IJK}\nv2 is {1,30:IJK}", v1, v2);
            Console.WriteLine("\nIn default format,\nv1 is {0,30}\nv2 is {1,30}", v1, v2);
            Console.WriteLine("\nIn VE format,\nv1 is {0,30:VE}\nv2 is {1,30:VE}", v1, v2);
            Console.WriteLine("\nNorms are:\nv1 is {0,20:N}\nv2 is {1,30:N}", v1, v2);

            Console.ReadKey();
        }
    }

    struct Vector : IFormattable
    {
        public double x, y, z;

        public Vector(double x, double y, double z)
        {
            this.x = x;
            this.y = y;
            this.z = z;
        }

        public string ToString(String format, IFormatProvider formatProvider)
        {
            if (format == null)
            {
                return ToString();
            }

            string formatUpper = format.ToUpper();
            switch (formatUpper)
            {
                case "N":
                    return "|| " + Norm().ToString() + " ||";
                case "VE":
                    return String.Format("( {0:E}, {1:E}, {2:E} )",x,y,z);
                case "IJK":
                    StringBuilder sb = new StringBuilder(x.ToString(), 30);
                    sb.AppendFormat(" i + ");
                    sb.AppendFormat(y.ToString());
                    sb.AppendFormat(" j + ");
                    sb.AppendFormat(z.ToString());
                    sb.AppendFormat(" k");
                    return sb.ToString();
                default:
                    return ToString();
            }
        }

        public override string ToString()
        {
            return "( " + x + ", " + y + ", " + z + " )";
        }

        public double Norm()
        {
            return x * x + y * y + z * z;
        }
    }

{0,30:IJK}中IJK會(huì)當(dāng)成參數(shù)傳給ToString中的format。這已經(jīng)驗(yàn)證過(guò),可是為什么不可以寫成 {0,:IJK}這樣?
格式不是這樣嗎?{index[,alignment][:formatString]} 。
??????

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容