<?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%2FExtension</id>
		<title>Csharp/CSharp Tutorial/Class/Extension - История изменений</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%2FExtension"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/Extension&amp;action=history"/>
		<updated>2026-04-29T23:12:33Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/Extension&amp;diff=5673&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/Extension&amp;diff=5673&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/Extension&amp;diff=5674&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/Extension&amp;diff=5674&amp;oldid=prev"/>
				<updated>2010-05-26T12:16:10Z</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;==Adding extension method for int==&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.Text;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Runtime.rupilerServices;&lt;br /&gt;
public static class MyExtensions&lt;br /&gt;
{&lt;br /&gt;
    public static void DisplayDefiningAssembly(this object obj)&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(obj.GetType().Name);&lt;br /&gt;
        Console.WriteLine(Assembly.GetAssembly(obj.GetType()));&lt;br /&gt;
    }&lt;br /&gt;
    public static int ReverseDigits(this int i)&lt;br /&gt;
    {&lt;br /&gt;
        char[] digits = i.ToString().ToCharArray();&lt;br /&gt;
        Array.Reverse(digits);&lt;br /&gt;
        string newDigits = new string(digits);&lt;br /&gt;
        return int.Parse(newDigits);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Program&lt;br /&gt;
{&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
        int myInt = 987;&lt;br /&gt;
        myInt.DisplayDefiningAssembly();&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0} is reversed to {1}&amp;quot;, myInt, myInt.ReverseDigits());&lt;br /&gt;
        Console.ReadLine();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adding extension to Stream==&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.ruponentModel;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
    public static class StreamUtilWithExtensions&lt;br /&gt;
    {&lt;br /&gt;
        const int BufferSize = 8192;&lt;br /&gt;
        public static void CopyTo(this Stream input,Stream output)&lt;br /&gt;
        {&lt;br /&gt;
            byte[] buffer = new byte[BufferSize];&lt;br /&gt;
            int read;&lt;br /&gt;
            while ((read = input.Read(buffer, 0, buffer.Length)) &amp;gt; 0)&lt;br /&gt;
            {&lt;br /&gt;
                output.Write(buffer, 0, read);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        public static byte[] ReadFully(this Stream input)&lt;br /&gt;
        {&lt;br /&gt;
            using (MemoryStream tempStream = new MemoryStream())&lt;br /&gt;
            {&lt;br /&gt;
                CopyTo(input, tempStream);&lt;br /&gt;
                if (tempStream.Length == tempStream.GetBuffer().Length)&lt;br /&gt;
                {&lt;br /&gt;
                    return tempStream.GetBuffer();&lt;br /&gt;
                }&lt;br /&gt;
                return tempStream.ToArray();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    class MainClass&lt;br /&gt;
    {&lt;br /&gt;
        static void Main()&lt;br /&gt;
        {&lt;br /&gt;
            WebRequest request = WebRequest.Create(&amp;quot;http://nfex.ru&amp;quot;);&lt;br /&gt;
            using (WebResponse response = request.GetResponse())&lt;br /&gt;
            using (Stream responseStream = response.GetResponseStream())&lt;br /&gt;
            using (FileStream output = File.Create(&amp;quot;data.dat&amp;quot;))&lt;br /&gt;
            {&lt;br /&gt;
                responseStream.CopyTo(output);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adding reverse operation to string==&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.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
    public static class ExtensionLibExtensions&lt;br /&gt;
    {&lt;br /&gt;
        public static string ReverseString(this string inputString)&lt;br /&gt;
        {&lt;br /&gt;
            return new string(inputString.ToCharArray().Reverse().ToArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            string sourceString = &amp;quot;this is a test&amp;quot;;&lt;br /&gt;
            Console.WriteLine(&amp;quot;String backwards: {0}&amp;quot;, sourceString.ReverseString());&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add title case to string class==&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.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
    public static class ExtensionLibExtensions&lt;br /&gt;
    {&lt;br /&gt;
        public static string ToTitleCase(this string inputString, bool forceLower)&lt;br /&gt;
        {&lt;br /&gt;
            inputString = inputString.Trim();&lt;br /&gt;
            if (inputString == &amp;quot;&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                return &amp;quot;&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            if (forceLower)&lt;br /&gt;
            {&lt;br /&gt;
                inputString = inputString.ToLower();&lt;br /&gt;
            }&lt;br /&gt;
            string[] inputStringAsArray = inputString.Split(&amp;quot; &amp;quot;);&lt;br /&gt;
            StringBuilder sb = new StringBuilder();&lt;br /&gt;
            for (int i = 0; i &amp;lt; inputStringAsArray.Length; i++)&lt;br /&gt;
            {&lt;br /&gt;
                if (inputStringAsArray[i].Length &amp;gt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    sb.AppendFormat(&amp;quot;{0}{1} &amp;quot;,&lt;br /&gt;
                       inputStringAsArray[i].Substring(0, 1).ToUpper(),&lt;br /&gt;
                       inputStringAsArray[i].Substring(1));&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return sb.ToString(0, sb.Length - 1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            string sourceString = &amp;quot;this is a test&amp;quot;;&lt;br /&gt;
            Console.WriteLine(&amp;quot;String with title casing: {0}&amp;quot;, sourceString.ToTitleCase(true));&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==conflicting extension methods==&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 static class ExtensionMethods&lt;br /&gt;
    {&lt;br /&gt;
        public static string Substring(this string s, int startIndex, int endIndex)&lt;br /&gt;
        {&lt;br /&gt;
            if (startIndex &amp;gt;= 0 &amp;amp;&amp;amp; startIndex &amp;lt;= endIndex &amp;amp;&amp;amp; endIndex &amp;lt; s.Length)&lt;br /&gt;
                return s.Substring(startIndex, endIndex - startIndex);&lt;br /&gt;
            else&lt;br /&gt;
                return s;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class Tester{&lt;br /&gt;
        public static void Main()&lt;br /&gt;
        {&lt;br /&gt;
            string hello = &amp;quot;Hello&amp;quot;;&lt;br /&gt;
            Console.WriteLine(&amp;quot;hello.Substring(2, 3) = {0}&amp;quot;, hello.Substring(2, 3));&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==extension method==&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 static class ExtensionMethods&lt;br /&gt;
    {&lt;br /&gt;
        public static string Right(this string s, int n)&lt;br /&gt;
        {&lt;br /&gt;
            if (n &amp;lt; 0 || n &amp;gt; s.Length)&lt;br /&gt;
                return s;&lt;br /&gt;
            else&lt;br /&gt;
                return s.Substring(s.Length - n);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class Tester&lt;br /&gt;
    {&lt;br /&gt;
        public static void Main()&lt;br /&gt;
        {&lt;br /&gt;
            string hello = &amp;quot;Hello&amp;quot;;&lt;br /&gt;
            Console.WriteLine(&amp;quot;hello.Right(-1) = {0}&amp;quot;, hello.Right(-1));&lt;br /&gt;
            Console.WriteLine(&amp;quot;hello.Right(0) = {0}&amp;quot;, hello.Right(0));&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Extension Method On Null Reference==&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.ruponentModel;&lt;br /&gt;
&lt;br /&gt;
    static class NullUtil&lt;br /&gt;
    {&lt;br /&gt;
        public static bool IsNull(this object x)&lt;br /&gt;
        {&lt;br /&gt;
            return x == null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    class MainClass&lt;br /&gt;
    {&lt;br /&gt;
        static void Main()&lt;br /&gt;
        {&lt;br /&gt;
            object y = null;&lt;br /&gt;
            Console.WriteLine(y.IsNull());&lt;br /&gt;
            y = new object();&lt;br /&gt;
            Console.WriteLine(y.IsNull());&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>