实现自定义IFormattable

using System;

using System.Collections;

using System.Linq;

using System.Text;

using System.Collections.Generic;

using System.Runtime.Serialization;





namespace TestCS

{

    //实现IFormattable

    struct Vector:IFormattable

    {

        public double x, y, z;



        public Vector(double a, double b, double c)

        {

            x = a; y = b; z = c;

        }



        #region IFormattable 成员



        public string ToString(string format, IFormatProvider formatProvider)

        {

            switch (format.ToUpper())

            {

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

            }

            

        }



        private double  Norm()

        {

            return x * x + y * y + z * z;

        }



        #endregion

    }





    public class Progarm

    {

        public static void Main(string[] args)

        {

            //IFormatProvider表示要显示的变量

            Vector v1 = new Vector(2.3, 44.24, -33.3);

            Console.WriteLine("{0:N}", v1);

            Console.WriteLine("{0:ve}", v1);

            Console.WriteLine("{0:ijk}", v1);



            Console.ReadLine();

        }

    }





  

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值