简单的System.IFormattable实现示例:

原创 2006年05月24日 11:09:00

实现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 )

[.Net码农]MVC——入门+最简单的小实例

http://blog.csdn.net/suneqing/article/details/41427037?utm_source=tuicool&utm_medium=referral ...
  • CrackLibby
  • CrackLibby
  • 2015年11月19日 22:22
  • 1118

Android各种简单的对话框的实现案例

随笔记录Android作业 1.1  普通对话框 1.2  列表对话框 1.3  单选对话框 1.4  多选对话框 1.5  时间对话框 1.6  日期...
  • p168455
  • p168455
  • 2016年03月16日 23:30
  • 1131

简单工厂模式--结合实例学习简单工厂模式

在讲解简单工厂模式之前,有必要先了解一下OO的一些原则   1. OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。也就是说,对于一个已有的软件...
  • u012116457
  • u012116457
  • 2014年03月20日 22:02
  • 3945

C# 自定义格式字符串随笔(IFormattable,IFormatProvider,ICustomFormatter三接口的实现)

.NET Framework提供了方法,能够将任何数值、枚举以及日期和时间等基数据类型表示为字符串 格式化由格式说明符字符的字符串控制,该字符串指示如何表示基类型值 例如,格式说明符指示:是否应该用科...
  • bhfwg
  • bhfwg
  • 2011年06月24日 22:58
  • 250

winform 实现IFormattable源码

  • 2009年11月26日 14:17
  • 6KB
  • 下载

linux网络编程之System V 信号量(二):用信号量实现进程互斥示例和解决哲学家就餐问题

一、我们在前面讲进程间通信的时候提到过进程互斥的概念,下面写个程序来模拟一下,程序流程如下图: 即父进程打印字符O,子进程打印字符X,每次打印一个字符后要sleep 一下,这里要演示的效果是,在打...
  • Simba888888
  • Simba888888
  • 2013年06月15日 16:57
  • 3088

linux网络编程之System V 信号量(二):用信号量实现进程互斥示例和解决哲学家就餐问题

一、我们在前面讲进程间通信的时候提到过进程互斥的概念,下面写个程序来模拟一下,程序流程如下图: 即父进程打印字符O,子进程打印字符X,每次打印一个字符后要sleep 一下,这里要演示的效果是,在...
  • Sandeldeng
  • Sandeldeng
  • 2016年10月26日 15:17
  • 355

news_system,实现简单网页+java后台+数据库对标题和内容进行增删改查

  • 2017年08月03日 14:35
  • 518KB
  • 下载

在ASP.NET WebForm简单实现伪静态,通过(System.Web.Routing)

开发环境:VS2010      VS2010已经集成了Routing组件,在ASP.NET MVC中,我们通过URLRouting实现了Controller,Action的URL控制。在WEBF...
  • wyqlxy
  • wyqlxy
  • 2011年08月25日 13:08
  • 2758

DirectShow Filter 最简单的示例+两个 PIN 的实现

  • 2014年05月27日 17:09
  • 20KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单的System.IFormattable实现示例:
举报原因:
原因补充:

(最多只允许输入30个字)