<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FClass%2FIFormattable</id>
		<title>Csharp/CSharp Tutorial/Class/IFormattable - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FClass%2FIFormattable"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/IFormattable&amp;action=history"/>
		<updated>2026-04-29T17:29:57Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/IFormattable&amp;diff=5665&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/IFormattable&amp;diff=5665&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/IFormattable&amp;diff=5666&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/IFormattable&amp;diff=5666&amp;oldid=prev"/>
				<updated>2010-05-26T12:16:09Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Formattable Vector==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
class MainEntryPoint {&lt;br /&gt;
    static void Main() {&lt;br /&gt;
        Vector v1 = new Vector(1, 32, 5);&lt;br /&gt;
        Vector v2 = new Vector(845.4, 54.3, -7.8);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0,30:IJK}   \n   {1,30:IJK} \n&amp;quot;, v1, v2);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0,30}       \n   {1,30} \n&amp;quot;, v1, v2);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0,30:VE}    \n   {1,30:VE} \n&amp;quot;, v1, v2);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0,20:N}     \n   {1,20:N}&amp;quot;, v1, v2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
struct Vector : IFormattable {&lt;br /&gt;
    public double x, y, z;&lt;br /&gt;
    public Vector(double x, double y, double z) {&lt;br /&gt;
        this.x = x;&lt;br /&gt;
        this.y = y;&lt;br /&gt;
        this.z = z;&lt;br /&gt;
    }&lt;br /&gt;
    public string ToString(string format, IFormatProvider formatProvider) {&lt;br /&gt;
        if (format == null)&lt;br /&gt;
            return ToString();&lt;br /&gt;
        string formatUpper = format.ToUpper();&lt;br /&gt;
        switch (formatUpper) {&lt;br /&gt;
            case &amp;quot;N&amp;quot;:&lt;br /&gt;
                return &amp;quot;|| &amp;quot; + Norm().ToString() + &amp;quot; ||&amp;quot;;&lt;br /&gt;
            case &amp;quot;VE&amp;quot;:&lt;br /&gt;
                return String.Format(&amp;quot;( {0:E}, {1:E}, {2:E} )&amp;quot;, x, y, z);&lt;br /&gt;
            case &amp;quot;IJK&amp;quot;:&lt;br /&gt;
                StringBuilder sb = new StringBuilder(x.ToString(), 30);&lt;br /&gt;
                sb.Append(&amp;quot; i + &amp;quot;);&lt;br /&gt;
                sb.Append(y.ToString());&lt;br /&gt;
                sb.Append(&amp;quot; j + &amp;quot;);&lt;br /&gt;
                sb.Append(z.ToString());&lt;br /&gt;
                sb.Append(&amp;quot; k&amp;quot;);&lt;br /&gt;
                return sb.ToString();&lt;br /&gt;
            default:&lt;br /&gt;
                return ToString();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public Vector(Vector rhs) {&lt;br /&gt;
        x = rhs.x;&lt;br /&gt;
        y = rhs.y;&lt;br /&gt;
        z = rhs.z;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString() {&lt;br /&gt;
        return &amp;quot;( &amp;quot; + x + &amp;quot; , &amp;quot; + y + &amp;quot; , &amp;quot; + z + &amp;quot; )&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    public double this[uint i] {&lt;br /&gt;
        get {&lt;br /&gt;
            switch (i) {&lt;br /&gt;
                case 0:&lt;br /&gt;
                    return x;&lt;br /&gt;
                case 1:&lt;br /&gt;
                    return y;&lt;br /&gt;
                case 2:&lt;br /&gt;
                    return z;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new IndexOutOfRangeException(&lt;br /&gt;
                       &amp;quot;Attempt to retrieve Vector element&amp;quot; + i);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        set {&lt;br /&gt;
            switch (i) {&lt;br /&gt;
                case 0:&lt;br /&gt;
                    x = value;&lt;br /&gt;
                    break;&lt;br /&gt;
                case 1:&lt;br /&gt;
                    y = value;&lt;br /&gt;
                    break;&lt;br /&gt;
                case 2:&lt;br /&gt;
                    z = value;&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new IndexOutOfRangeException(&lt;br /&gt;
                       &amp;quot;Attempt to set Vector element&amp;quot; + i);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    private const double Epsilon = 0.0000001;&lt;br /&gt;
    public static bool operator ==(Vector lhs, Vector rhs) {&lt;br /&gt;
        if (System.Math.Abs(lhs.x - rhs.x) &amp;lt; Epsilon &amp;amp;&amp;amp;&lt;br /&gt;
           System.Math.Abs(lhs.y - rhs.y) &amp;lt; Epsilon &amp;amp;&amp;amp;&lt;br /&gt;
           System.Math.Abs(lhs.z - rhs.z) &amp;lt; Epsilon)&lt;br /&gt;
            return true;&lt;br /&gt;
        else&lt;br /&gt;
            return false;&lt;br /&gt;
    }&lt;br /&gt;
    public static bool operator !=(Vector lhs, Vector rhs) {&lt;br /&gt;
        return !(lhs == rhs);&lt;br /&gt;
    }&lt;br /&gt;
    public static Vector operator +(Vector lhs, Vector rhs) {&lt;br /&gt;
        Vector Result = new Vector(lhs);&lt;br /&gt;
        Result.x += rhs.x;&lt;br /&gt;
        Result.y += rhs.y;&lt;br /&gt;
        Result.z += rhs.z;&lt;br /&gt;
        return Result;&lt;br /&gt;
    }&lt;br /&gt;
    public static Vector operator *(double lhs, Vector rhs) {&lt;br /&gt;
        return new Vector(lhs * rhs.x, lhs * rhs.y, lhs * rhs.z);&lt;br /&gt;
    }&lt;br /&gt;
    public static Vector operator *(Vector lhs, double rhs) {&lt;br /&gt;
        return rhs * lhs;&lt;br /&gt;
    }&lt;br /&gt;
    public static double operator *(Vector lhs, Vector rhs) {&lt;br /&gt;
        return lhs.x * rhs.x + lhs.y + rhs.y + lhs.z * rhs.z;&lt;br /&gt;
    }&lt;br /&gt;
    public double Norm() {&lt;br /&gt;
        return x * x + y * y + z * z;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implementation of IFormattable==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
public class MyClass : IFormattable&lt;br /&gt;
{&lt;br /&gt;
    private string title;&lt;br /&gt;
    private string[] names;&lt;br /&gt;
    public MyClass(string title, params string[] names)&lt;br /&gt;
    {&lt;br /&gt;
        this.title = title;&lt;br /&gt;
        this.names = names;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString()&lt;br /&gt;
    {&lt;br /&gt;
        return ToString(&amp;quot;G&amp;quot;, null);&lt;br /&gt;
    }&lt;br /&gt;
    public string ToString(string format, IFormatProvider formatProvider)&lt;br /&gt;
    {&lt;br /&gt;
        string result = null;&lt;br /&gt;
        if (format == null) &lt;br /&gt;
            format = &amp;quot;G&amp;quot;;&lt;br /&gt;
        switch (format.ToUpper()[0])&lt;br /&gt;
        {&lt;br /&gt;
            case &amp;quot;S&amp;quot;:&lt;br /&gt;
                result = &amp;quot;S.&amp;quot; ;&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;P&amp;quot;:&lt;br /&gt;
                result = &amp;quot;P. &amp;quot;;&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;I&amp;quot;:&lt;br /&gt;
                result = &amp;quot;I. &amp;quot;;&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;G&amp;quot;:&lt;br /&gt;
            default:&lt;br /&gt;
                result = &amp;quot;G. &amp;quot;;&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
        return result;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        MyClass person = new MyClass(&amp;quot;Mr&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;Dear {0:G},&amp;quot;, person);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;Dear {0:P},&amp;quot;, person);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;Dear {0:I},&amp;quot;, person);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;Dear {0},&amp;quot;, person);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;Dear {0:S},&amp;quot;, person);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Dear G. ,&lt;br /&gt;
Dear P. ,&lt;br /&gt;
Dear I. ,&lt;br /&gt;
Dear G. ,&lt;br /&gt;
Dear S.,&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implements IFormattable with switch statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
&lt;br /&gt;
public class Employee : IFormattable {&lt;br /&gt;
    private string title;&lt;br /&gt;
    private string[] names;&lt;br /&gt;
    public Employee(string title, params string[] names) {&lt;br /&gt;
        this.title = title;&lt;br /&gt;
        this.names = names;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString() {&lt;br /&gt;
        return ToString(&amp;quot;G&amp;quot;, null);&lt;br /&gt;
    }&lt;br /&gt;
    public string ToString(string format, IFormatProvider formatProvider) {&lt;br /&gt;
        string result = null;&lt;br /&gt;
        if (format == null) format = &amp;quot;G&amp;quot;;&lt;br /&gt;
        switch (format.ToUpper()[0]) {&lt;br /&gt;
            case &amp;quot;S&amp;quot;:&lt;br /&gt;
                result = names[0][0] + &amp;quot;.&amp;quot; + names[names.Length - 1];&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;P&amp;quot;:&lt;br /&gt;
                if (title != null &amp;amp;&amp;amp; title.Length != 0) {&lt;br /&gt;
                    result = title + &amp;quot;.&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;I&amp;quot;:&lt;br /&gt;
                result = names[0];&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;G&amp;quot;:&lt;br /&gt;
            default:&lt;br /&gt;
                result = names[0] + &amp;quot; &amp;quot; + names[names.Length - 1];&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
        return result;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Employee person = new Employee(&amp;quot;Mr&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;{0:G},&amp;quot;, person);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;{0:P},&amp;quot;, person);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;{0:I},&amp;quot;, person);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;{0},&amp;quot;, person);&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;{0:S},&amp;quot;, person);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>