实现IFormattable接口的例子

参见C#高级编程(4)8 字符串和正则表达式

 

 

    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);

        }

    }

 

    class Vector : IFormattable

    {

        private double x, y, z;

 

        public Vector(double x, double y, double z)

        {

            this.x = x;

            this.y = y;

            this.z = z;

        }

 

        public override string ToString()

        {

            return "(" + x + ", " + y + ", " + z + ")";

        }

 

 

        #region IFormattable Members

 

        public string ToString(string format, IFormatProvider formatProvider)

        {

            if (format == null)

            {

                return ToString();

            }

 

            string formatUpper = format.ToUpper();

            switch (formatUpper)

            {

                case "VE":

                    return string.Format("({0:E},{1:E},{2:E})", x, y, z);

                case "IJK":

                    StringBuilder sb = new StringBuilder(x.ToString(), 30);

                    sb.Append(" i + ");

                    sb.Append(y.ToString());

                    sb.Append(" j + ");

                    sb.Append(z.ToString());

                    sb.Append(" k");

                    return sb.ToString();

                default:

                    return ToString();

            }

        }

 

        #endregion

    }

 

输出结果如下

 

In IJK format,

v1 is               1 i + 32 j + 5 k

v2 is      845.4 i + 54.3 j + -7.8 k

 

In default format,

v1 is                     (1, 32, 5)

v2 is            (845.4, 54.3, -7.8)

 

In VE format,

v1 is (1.000000E+000,3.200000E+001,5.000000E+000)

v2 is (8.454000E+002,5.430000E+001,-7.800000E+000)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值