简单的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 )

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

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

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

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

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

PCA检测人脸的简单示例_matlab实现

[plain] view plaincopy %训练   %Lx=X'*X   clear;   clc;   train_path='..\Data\Tr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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