diandian82的专栏

Welcome to my blog. Hope you can get what you want.

简单的System.IFormattable实现示例:

实现System.IFormattable接口可以使用string.Format()方法按照不同的方式格式化自定义的类型,其实在使用Console.WriteLine("Cubic1: {0,15:XYZ}",a);方法,也只是先把Cubic1: {0,15:XYZ}字符串传递给string.Format()方法,格式化完毕后,送到控制台输出。

class Class1

        {

                static void Main(string[] args)

                {

            Cubic a = new Cubic(10,24,52);

//使用XYZ格式化字符串

            Console.WriteLine("Cubic1: {0,15:XYZ}",a);

//使用16X格式化字符串

            Console.WriteLine("Cubic1: {0,25:16X}",a);

//使用默认格式化字符串

            Console.WriteLine("Cubic1: {0,15}",a);

//使用非法格式化字符串,其实还是默认格式化字符串

            Console.WriteLine("Cubic1: {0,15:654}",a);

                }

        }

 

    struct Cubic:System.IFormattable

    {

        int x,y,z;

 

        public Cubic(int x,int y,int z)

        {

            this.z = z;

            this.x = x;

            this.y = y;

        }

//这个方法是要实现System.IFormattable所必需的format就是格式化字符串

        public string ToString(string format, IFormatProvider formatPorvider)

        {

            if(format == null)

                return ToString();

            switch( format )

            {

                case "XYZ":

                    return "X="+x.ToString()+" Y="+y.ToString()+" Z="+z.ToString();

                case "16X":

                    return string.Format("x={0,-5:X},y={1,-5:X},z={2,-5:X}",x,y,z);

                default:

                    return ToString();

            }

        }

 

        public override string ToString()

        {

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

        }

    }

 

输出结果如下:

Cubic1:  X=10 Y=24 Z=52

Cubic1:   x=A    ,y=18   ,z=34  

Cubic1: ( 10 , 24 , 52 )

Cubic1: ( 10 , 24 , 52 )

阅读更多
文章标签: string class struct null
个人分类: .Net 其他
想对作者说点什么? 我来说一句

一个最简单的 dubbo开发实例

2017年11月22日 74KB 下载

ajax实例的简单实现

2012年09月06日 1KB 下载

没有更多推荐了,返回首页

不良信息举报

简单的System.IFormattable实现示例:

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭