<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-9039594672466512821</atom:id><lastBuildDate>Thu, 12 Sep 2024 03:47:57 +0000</lastBuildDate><category>c#</category><category>code</category><category>.Net</category><category>.Net 2</category><category>Array</category><category>string</category><category>Debug</category><category>File</category><category>yield</category><category>Path</category><category>iterator</category><category>Exception</category><category>Serialization</category><category>IDisposable</category><category>ReferencesManager</category><category>using</category><category>Encoding</category><category>archives</category><category>attribute</category><category>calendar</category><category>comparison</category><category>convertation</category><category>email</category><category>generics</category><category>internet</category><category>operator ?</category><category>operator ??</category><category>opertaor set</category><category>reflection</category><category>smtp</category><category>sort</category><category>zip</category><title>C# Tips</title><description></description><link>http://csharp-tips.blogspot.com/</link><managingEditor>noreply@blogger.com (Unknown)</managingEditor><generator>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle/><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-3152467154036641584</guid><pubDate>Fri, 10 Apr 2009 06:49:00 +0000</pubDate><atom:updated>2009-04-10T09:49:23.640+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">string</category><title>How to reverse string</title><description>&lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; originalString = &lt;span style="color: #a31515"&gt;&amp;quot;123456789&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;char&lt;/span&gt;[] buffer = originalString.ToCharArray();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Array&lt;/span&gt;.Reverse(buffer);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; reversedString = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;(buffer);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;original string: &amp;quot;&lt;/span&gt; + originalString);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;reversed string: &amp;quot;&lt;/span&gt; + reversedString);&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oXLx-JuluAU/Sd7r7wOjvxI/AAAAAAAAAvY/w2aiLhnufvg/s1600-h/image%5B2%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="47" alt="image" src="http://lh5.ggpht.com/_oXLx-JuluAU/Sd7r8vnsVXI/AAAAAAAAAvc/UH1iANEMm34/image_thumb.png?imgmax=800" width="236" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2009/04/how-to-reverse-string.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh5.ggpht.com/_oXLx-JuluAU/Sd7r8vnsVXI/AAAAAAAAAvc/UH1iANEMm34/s72-c/image_thumb.png?imgmax=800" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-5146722527215262688</guid><pubDate>Thu, 09 Apr 2009 23:44:00 +0000</pubDate><atom:updated>2009-04-10T02:44:44.019+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">string</category><title>How to fill String variable.</title><description>&lt;p&gt;To fill a string variable, sometimes, they use next way:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; const string breakLine = &amp;quot;----------&amp;quot;; &lt;/p&gt;  &lt;p&gt;Seems, next way (usage one of string’s constructor) will be better:&lt;/p&gt;  &lt;p&gt;string line = new string('-', 10);    &lt;br /&gt;Console.WriteLine(&amp;quot;new string('-', 10) &amp;gt;&amp;quot; + line); &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Console Output:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oXLx-JuluAU/Sd6IW5IBA-I/AAAAAAAAAvI/5fr8M-GOh-k/s1600-h/image%5B3%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="45" alt="image" src="http://lh5.ggpht.com/_oXLx-JuluAU/Sd6IZ4T7ORI/AAAAAAAAAvM/tzVHX2-kyi0/image_thumb%5B1%5D.png?imgmax=800" width="492" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2009/04/how-to-fill-string-variable.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh5.ggpht.com/_oXLx-JuluAU/Sd6IZ4T7ORI/AAAAAAAAAvM/tzVHX2-kyi0/s72-c/image_thumb%5B1%5D.png?imgmax=800" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-6276389967350234682</guid><pubDate>Thu, 05 Jun 2008 11:26:00 +0000</pubDate><atom:updated>2008-06-05T14:26:05.457+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">attribute</category><category domain="http://www.blogger.com/atom/ns#">reflection</category><title>Sample of attribute usage in c# (csharp).</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; To show usage of attribute let’s write method, which pass all fields of a object and if a field has attribute [NonSerialized], then the method will copy value into the field from second object. The method can be used to restore unserialized fields from original object.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sample:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Class:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]&lt;br /&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;FooClass&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;public int &lt;/span&gt;data1;&lt;br /&gt;    [&lt;span style="color: #2b91af"&gt;NonSerialized&lt;/span&gt;] &lt;span style="color: blue"&gt;public int &lt;/span&gt;data2;&lt;br /&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;FooClass(&lt;span style="color: blue"&gt;int &lt;/span&gt;data1, &lt;span style="color: blue"&gt;int &lt;/span&gt;data2)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.data1 = data1;&lt;br /&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.data2 = data2;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Usage:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;FooClass &lt;/span&gt;destObject = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;FooClass&lt;/span&gt;(10, 20);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;FooClass &lt;/span&gt;sourceObject = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;FooClass&lt;/span&gt;(10, 30);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;destObject.data2: {0}, sourceObject.data2: {1}&amp;quot;&lt;/span&gt;, destObject.data2, sourceObject.data2);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;RestoreUtils&lt;/span&gt;.RestoreNonSerialized(destObject, sourceObject);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;destObject.data2: {0}, sourceObject.data2: {1}&amp;quot;&lt;/span&gt;, destObject.data2, sourceObject.data2);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Output:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SEfNSE3n5yI/AAAAAAAAAc0/pzCjXQTNOB0/s1600-h/output%5B7%5D.jpg"&gt;&lt;img title="output" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="56" alt="output" src="http://lh3.ggpht.com/igor.zc/SEfNS4aw16I/AAAAAAAAAc4/GBx_hiPVj7o/output_thumb%5B3%5D.jpg?imgmax=800" width="396" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;We can see, that method RestoreUtils.RestoreNonSerialized restored values of destObject field data2 from sourceObject.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sources of RestoreUtils.RestoreNonSerialized&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Reflection;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;namespace &lt;/span&gt;ReflectionServices&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RestoreUtils&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;const &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BindingFlags &lt;/span&gt;flags = &lt;span style="color: #2b91af"&gt;BindingFlags&lt;/span&gt;.Instance | &lt;span style="color: #2b91af"&gt;BindingFlags&lt;/span&gt;.NonPublic | &lt;span style="color: #2b91af"&gt;BindingFlags&lt;/span&gt;.Public;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public static void &lt;/span&gt;RestoreNonSerialized(&lt;span style="color: blue"&gt;object &lt;/span&gt;dest, &lt;span style="color: blue"&gt;object &lt;/span&gt;source)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;if &lt;/span&gt;(dest == &lt;span style="color: blue"&gt;null &lt;/span&gt;|| source == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span style="color: blue"&gt;return&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;Type &lt;/span&gt;objectType = dest.GetType();&lt;br /&gt;            &lt;span style="color: blue"&gt;if &lt;/span&gt;(objectType.IsPrimitive | objectType.IsValueType)&lt;br /&gt;                &lt;span style="color: blue"&gt;return&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;FieldInfo&lt;/span&gt;[] dstFieldsInfo = objectType.GetFields(flags);&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;FieldInfo&lt;/span&gt;[] srcFieldsInfo = source.GetType().GetFields(flags);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;fieldIndex = 0; fieldIndex &amp;lt; dstFieldsInfo.Length; fieldIndex++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #2b91af"&gt;FieldInfo &lt;/span&gt;fieldInfo = dstFieldsInfo[fieldIndex];&lt;br /&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(fieldInfo.IsNotSerialized)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: blue"&gt;object &lt;/span&gt;newValue = srcFieldsInfo[fieldIndex].GetValue(source);&lt;br /&gt;                    fieldInfo.SetValue(dest, newValue);&lt;br /&gt;                    &lt;span style="color: blue"&gt;continue&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: blue"&gt;object &lt;/span&gt;dstFieldObject = fieldInfo.GetValue(dest);&lt;br /&gt;                &lt;span style="color: blue"&gt;object &lt;/span&gt;srcFieldObject = srcFieldsInfo[fieldIndex].GetValue(source);&lt;br /&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(dstFieldObject != &lt;span style="color: blue"&gt;null &lt;/span&gt;&amp;amp;&amp;amp; srcFieldObject != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;                    RestoreNonSerialized(dstFieldObject, srcFieldObject);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;IEnumerable &lt;/span&gt;dstEnumerable = dest &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;;&lt;br /&gt;            &lt;span style="color: blue"&gt;if &lt;/span&gt;(dstEnumerable != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #2b91af"&gt;IEnumerable &lt;/span&gt;srcEnumerable = source &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;;&lt;br /&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(srcEnumerable != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: #2b91af"&gt;IEnumerator &lt;/span&gt;srcEnumerator = srcEnumerable.GetEnumerator();&lt;br /&gt;                    &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Object &lt;/span&gt;dstItem &lt;span style="color: blue"&gt;in &lt;/span&gt;dstEnumerable)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style="color: blue"&gt;bool &lt;/span&gt;next = srcEnumerator.MoveNext();&lt;br /&gt;                        &lt;span style="color: blue"&gt;if &lt;/span&gt;(!next)&lt;br /&gt;                            &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;br /&gt;                        &lt;span style="color: #2b91af"&gt;Object &lt;/span&gt;srcItem = srcEnumerator.Current;&lt;br /&gt;&lt;br /&gt;                        RestoreNonSerialized(dstItem, srcItem);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/z0w1kczw(VS.80).aspx"&gt;Attributes (C# Programming Guide)&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/06/sample-of-attribute-usage-in-c-csharp.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh3.ggpht.com/igor.zc/SEfNS4aw16I/AAAAAAAAAc4/GBx_hiPVj7o/s72-c/output_thumb%5B3%5D.jpg?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-7316758626266147608</guid><pubDate>Thu, 05 Jun 2008 11:04:00 +0000</pubDate><atom:updated>2008-06-05T14:04:54.984+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">Serialization</category><title>How to serialize c# object to binary data.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The simplest way to serialize object, that is use class &lt;a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(VS.71).aspx"&gt;BinaryFormatter&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sample of serialization to file:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;FileStream &lt;/span&gt;stream = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;FileStream&lt;/span&gt;(tempFilePath, &lt;span style="color: #2b91af"&gt;FileMode&lt;/span&gt;.Create))&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;BinaryFormatter &lt;/span&gt;b = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BinaryFormatter&lt;/span&gt;();&lt;br /&gt;    b.Serialize(stream, originalData);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sample of deserialization to file:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Data &lt;/span&gt;actualData;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;FileStream &lt;/span&gt;stream = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;FileStream&lt;/span&gt;(tempFilePath, &lt;span style="color: #2b91af"&gt;FileMode&lt;/span&gt;.Open))&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;BinaryFormatter &lt;/span&gt;b = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BinaryFormatter&lt;/span&gt;();&lt;br /&gt;    actualData = (&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;)b.Deserialize(stream);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;where class Data has attribute [&lt;a href="http://msdn.microsoft.com/en-us/library/system.serializableattribute.aspx"&gt;Serializable&lt;/a&gt;].&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;See sources on &lt;a href="http://code.google.com/p/csharp-tips/source/browse"&gt;“C# tips samples” project&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="v" size="3"&gt;Reference: &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="v" size="3"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(VS.71).aspx"&gt;BinaryFormatter Class&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://csharp-tips.blogspot.com/2008/03/simplest-way-to-store-object-to-xml.html"&gt;&lt;font face="v" size="3"&gt;The simplest way to store object to .xml file in c#.&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="v" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/06/how-to-serialize-c-object-to-binary.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-5959297618888072577</guid><pubDate>Mon, 05 May 2008 04:16:00 +0000</pubDate><atom:updated>2008-05-05T07:16:25.038+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">comparison</category><category domain="http://www.blogger.com/atom/ns#">sort</category><category domain="http://www.blogger.com/atom/ns#">string</category><title>Comparison of 2 standard c# objects.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; To sort array (or list) of a objects, we need compare 2 objects and define number:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;0 - when 2 objects are same;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;+1 - when a 1st object more than 2nd;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;-1 - when a 1st object less than 2nd.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Samples:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sign of number:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;int &lt;/span&gt;x;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #2b91af"&gt;Environment&lt;/span&gt;.NewLine + &lt;span style="color: #a31515"&gt;&amp;quot;int x&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Math.Sign({0}) = {1}&amp;quot;&lt;/span&gt;, x = 10, &lt;span style="color: #2b91af"&gt;Math&lt;/span&gt;.Sign(x));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Math.Sign({0}) = {1}&amp;quot;&lt;/span&gt;, x = -10, &lt;span style="color: #2b91af"&gt;Math&lt;/span&gt;.Sign(x));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Math.Sign({0}) = {1}&amp;quot;&lt;/span&gt;, x = 0, &lt;span style="color: #2b91af"&gt;Math&lt;/span&gt;.Sign(x));&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;Compare 2 strings:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;s1;&lt;br /&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;s2;&lt;br /&gt;&lt;span style="color: blue"&gt;bool &lt;/span&gt;ignoreCase;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;) = {2}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;b&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;) = {2}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;b&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;) = {2}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;) = {2}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;aa&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;b&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;) = {2}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;bb&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;) = {2}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;b&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;) = {2}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;B&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;, {2}) = {3}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;, ignoreCase = &lt;span style="color: blue"&gt;false&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2, ignoreCase));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;String.Compare(\&amp;quot;{0}\&amp;quot;, \&amp;quot;{1}\&amp;quot;, {2}) = {3}&amp;quot;&lt;/span&gt;, s1 = &lt;span style="color: #a31515"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, s2 = &lt;span style="color: #a31515"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;, ignoreCase = &lt;span style="color: blue"&gt;true&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(s1, s2, ignoreCase));&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;Compare 2 DateTime objects:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;d1;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;d2;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;DateTime.Compare({0}, {1}) = {2}&amp;quot;&lt;/span&gt;, d1 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(2007, 10, 1), d2 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(2007, 10, 1), &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Compare(d1, d2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;DateTime.Compare({0}, {1}) = {2}&amp;quot;&lt;/span&gt;, d1 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(2006, 10, 1), d2 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(2007, 10, 1), &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Compare(d1, d2));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;DateTime.Compare({0}, {1}) = {2}&amp;quot;&lt;/span&gt;, d1 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(2008, 10, 1), d2 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(2007, 10, 1), &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Compare(d1, d2));&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;Console output:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SB6KEaG7iZI/AAAAAAAAAbs/NgsyBqshUy4/consoleSign%5B5%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="311" alt="consoleSign" src="http://lh5.ggpht.com/igor.zc/SB6KF6G7iaI/AAAAAAAAAb0/RduQWw38GAw/consoleSign_thumb%5B3%5D.png" width="546" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.math.sign.aspx"&gt;Math.Sign Method&lt;/a&gt;&lt;/font&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/zkcaxw5y.aspx"&gt;String.Compare Method&lt;/a&gt;&lt;/font&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.datetime.compare(VS.71).aspx"&gt;DateTime.Compare Method&lt;/a&gt;&lt;/font&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;  </description><link>http://csharp-tips.blogspot.com/2008/05/comparison-of-2-standard-c-objects.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh5.ggpht.com/igor.zc/SB6KF6G7iaI/AAAAAAAAAb0/RduQWw38GAw/s72-c/consoleSign_thumb%5B3%5D.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-4178600768999328893</guid><pubDate>Fri, 02 May 2008 07:48:00 +0000</pubDate><atom:updated>2008-05-02T10:48:12.020+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net 2</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">iterator</category><category domain="http://www.blogger.com/atom/ns#">string</category><title>Sorting with help of delegate Comparison.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; When we use Generic class List(T), we can easy to sort it with help of method Sort and delegate Comparison.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sample.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Definition of class Data:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Data&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;internal int &lt;/span&gt;id;&lt;br /&gt;    &lt;span style="color: blue"&gt;internal string &lt;/span&gt;name;&lt;br /&gt;    &lt;span style="color: blue"&gt;internal &lt;/span&gt;Data(&lt;span style="color: blue"&gt;int &lt;/span&gt;id, &lt;span style="color: blue"&gt;string &lt;/span&gt;name)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.id = id;&lt;br /&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.name = name;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Initialization of List&amp;lt;Data&amp;gt;:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;&amp;gt; dataList = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;&amp;gt;();&lt;br /&gt;dataList.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;(4, &lt;span style="color: #a31515"&gt;&amp;quot;London&amp;quot;&lt;/span&gt;));&lt;br /&gt;dataList.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;(2, &lt;span style="color: #a31515"&gt;&amp;quot;Rome&amp;quot;&lt;/span&gt;));&lt;br /&gt;dataList.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;(3, &lt;span style="color: #a31515"&gt;&amp;quot;New York&amp;quot;&lt;/span&gt;));&lt;br /&gt;dataList.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;(5, &lt;span style="color: #a31515"&gt;&amp;quot;Paris&amp;quot;&lt;/span&gt;));&lt;br /&gt;dataList.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;(1, &lt;span style="color: #a31515"&gt;&amp;quot;Jerusalem&amp;quot;&lt;/span&gt;));&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;DataServices&lt;/span&gt;.PrintList(&lt;span style="color: #a31515"&gt;&amp;quot;by original order:&amp;quot;&lt;/span&gt;, dataList);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sorting dataList by field id:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;dataList.Sort(&lt;span style="color: blue"&gt;delegate&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Data &lt;/span&gt;data1, &lt;span style="color: #2b91af"&gt;Data &lt;/span&gt;data2) { &lt;span style="color: blue"&gt;return &lt;/span&gt;data1.id - data2.id; });&lt;br /&gt;&lt;span style="color: #2b91af"&gt;DataServices&lt;/span&gt;.PrintList(&lt;span style="color: #a31515"&gt;&amp;quot;by id:&amp;quot;&lt;/span&gt;, dataList);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sorting dataList by field name:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;dataList.Sort(&lt;span style="color: blue"&gt;delegate&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Data &lt;/span&gt;data1, &lt;span style="color: #2b91af"&gt;Data &lt;/span&gt;data2) { &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Compare(data1.name, data2.name); });&lt;br /&gt;&lt;span style="color: #2b91af"&gt;DataServices&lt;/span&gt;.PrintList(&lt;span style="color: #a31515"&gt;&amp;quot;by name:&amp;quot;&lt;/span&gt;, dataList);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Console output:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh6.ggpht.com/igor.zc/SBrHNKG7iXI/AAAAAAAAAbc/km6CB13vUY0/consoleComparison3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="408" alt="consoleComparison" src="http://lh4.ggpht.com/igor.zc/SBrHOqG7iYI/AAAAAAAAAbk/XFvrpBqbY4w/consoleComparison_thumb1.png" width="338" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/3da4abas.aspx"&gt;List(T).Sort Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/tfakywbh.aspx"&gt;Comparison(T) Generic Delegate&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/yougerthen/104282008202917PM/1.aspx"&gt;Using IComparable and IComparer to compare objects&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/05/sorting-with-help-of-delegate.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh4.ggpht.com/igor.zc/SBrHOqG7iYI/AAAAAAAAAbk/XFvrpBqbY4w/s72-c/consoleComparison_thumb1.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-6173645228638433848</guid><pubDate>Tue, 29 Apr 2008 04:15:00 +0000</pubDate><atom:updated>2008-04-29T07:15:39.273+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">.Net 2</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">File</category><category domain="http://www.blogger.com/atom/ns#">iterator</category><category domain="http://www.blogger.com/atom/ns#">Path</category><category domain="http://www.blogger.com/atom/ns#">ReferencesManager</category><category domain="http://www.blogger.com/atom/ns#">string</category><category domain="http://www.blogger.com/atom/ns#">yield</category><title>ReferencesManager 1.0.2 : Utility to check .NET assembly references.</title><description>&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;.code { border: 1px dashed #999999; padding: 3px; background-color: #f6f6f6; text-autospace:none; font-size:9.0pt; font-family:"Courier New"}&lt;br /&gt;--&gt;&lt;/style&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; New build of &lt;a href="http://csharp-tips.blogspot.com/2008/04/utility-to-check-net-assembly.html"&gt;ReferencesManager&lt;/a&gt; (v1.0.2) is released.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; The build include new command line switch:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;-path=&amp;lt;customer path&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;which allows to define additional folders to search referenced assemblies. For example:&lt;/font&gt;&lt;/p&gt;  &lt;p class="code"&gt;&lt;font face="Verdana" size="3"&gt;ReferencesManager.exe Main.dll -path=D:\0;D:\1&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://csharp-tips.googlecode.com/files/ReferencesManager_1_0_2.exe"&gt;Downloading ReferencesManager 1.0.2&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sources can be downloaded from &lt;a href="http://code.google.com/p/csharp-tips/"&gt;&amp;quot;C# tips samples&amp;quot;&lt;/a&gt; project.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;References:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://csharp-tips.blogspot.com/2008/04/utility-to-check-net-assembly.html"&gt;Utility to check .NET assembly references&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/referencesmanager-102-utility-to-check.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-4605964596728830762</guid><pubDate>Sun, 27 Apr 2008 19:50:00 +0000</pubDate><atom:updated>2008-04-27T22:50:33.605+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><title>C# checked and unchecked keywords.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;C# arithmetic statements can be executed in &lt;strong&gt;checked&lt;/strong&gt; or &lt;strong&gt;unchecked&lt;/strong&gt; context. &amp;quot;Checked&amp;quot; context checks overflow and raises exception when a arithmetic overflow is detected.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sample:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;short &lt;/span&gt;x;&lt;br /&gt;&lt;span style="color: blue"&gt;short &lt;/span&gt;y;&lt;br /&gt;&lt;span style="color: blue"&gt;short &lt;/span&gt;z;&lt;br /&gt;&lt;br /&gt;x = 10;&lt;br /&gt;y = 20;&lt;br /&gt;z = (&lt;span style="color: blue"&gt;short&lt;/span&gt;) (x + y);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;\nz = {0}, where x = {1}, y = {2} and z = (short) (x + y);\n&amp;quot;&lt;/span&gt;, z, x, y);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SBTYv6G7iPI/AAAAAAAAAac/0KqLmxCr9bM/outputChecked13.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="44" alt="outputChecked1" src="http://lh3.ggpht.com/igor.zc/SBTY06G7iQI/AAAAAAAAAak/B4cAcphMNrM/outputChecked1_thumb1.png" width="417" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;x = &lt;span style="color: blue"&gt;short&lt;/span&gt;.MaxValue;&lt;br /&gt;y = &lt;span style="color: blue"&gt;short&lt;/span&gt;.MaxValue;&lt;br /&gt;z = (&lt;span style="color: blue"&gt;short&lt;/span&gt;) (x + y);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;z = {0}, where x = {1}, y = {2} and z = (short) (x + y);\n&amp;quot;&lt;/span&gt;, z, x, y);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/igor.zc/SBTY2KG7iRI/AAAAAAAAAas/yV3nmoS-Ipg/outputChecked23.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="48" alt="outputChecked2" src="http://lh5.ggpht.com/igor.zc/SBTY3aG7iSI/AAAAAAAAAa0/RTaHKZy-iII/outputChecked2_thumb1.png" width="427" border="0" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;x = &lt;span style="color: blue"&gt;short&lt;/span&gt;.MaxValue;&lt;br /&gt;y = &lt;span style="color: blue"&gt;short&lt;/span&gt;.MaxValue;&lt;br /&gt;&lt;span style="color: blue"&gt;try&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    z = &lt;span style="color: blue"&gt;checked&lt;/span&gt;((&lt;span style="color: blue"&gt;short&lt;/span&gt;) (x + y));&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;z = {0}, where x = {1}, y = {2}\n&amp;quot;&lt;/span&gt;, z, x, y);&lt;br /&gt;} &lt;span style="color: blue"&gt;catch &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;OverflowException&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;OverflowException ==&amp;gt; where x = {1}, y = {2} and z = checked((short) (x + y));\n&amp;quot;&lt;/span&gt;, z, x, y);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh6.ggpht.com/igor.zc/SBTY4qG7iTI/AAAAAAAAAa8/rzmRsTLMLc4/outputChecked34.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="73" alt="outputChecked3" src="http://lh3.ggpht.com/igor.zc/SBTY76G7iUI/AAAAAAAAAbE/rnxcTXHE15Q/outputChecked3_thumb2.png" width="458" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;x = &lt;span style="color: blue"&gt;short&lt;/span&gt;.MaxValue;&lt;br /&gt;y = &lt;span style="color: blue"&gt;short&lt;/span&gt;.MaxValue;&lt;br /&gt;z = &lt;span style="color: blue"&gt;unchecked&lt;/span&gt;((&lt;span style="color: blue"&gt;short&lt;/span&gt;)(x + y));&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;z = {0}, where x = {1}, y = {2} and z = unchecked((short)(x + y));\n&amp;quot;&lt;/span&gt;, z, x, y);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SBTY86G7iVI/AAAAAAAAAbM/c-hK3pKcuHs/outputChecked43.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="44" alt="outputChecked4" src="http://lh5.ggpht.com/igor.zc/SBTZBaG7iWI/AAAAAAAAAbU/bFsuNp8QC4o/outputChecked4_thumb1.png" width="452" border="0" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/74b4xzyw(VS.71).aspx"&gt;checked (C# Reference)&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/a569z7k8(VS.71).aspx"&gt;unchecked (C# Reference)&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/khy08726(VS.71).aspx"&gt;Checked and Unchecked&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/c-checked-and-unchecked-keywords.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh3.ggpht.com/igor.zc/SBTY06G7iQI/AAAAAAAAAak/B4cAcphMNrM/s72-c/outputChecked1_thumb1.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-6467392778843376507</guid><pubDate>Thu, 24 Apr 2008 07:30:00 +0000</pubDate><atom:updated>2008-04-24T10:30:32.320+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">string</category><title>CSharp (c#) methods String.PadLeft(), String.PadRight().</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; When we need to align output of strings we can use method &lt;strong&gt;String.PadLeft()&lt;/strong&gt; or &lt;strong&gt;String.PadRight()&lt;/strong&gt;:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sample:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;[] initialData = &lt;span style="color: blue"&gt;new string&lt;/span&gt;[] &lt;br /&gt;    {&lt;span style="color: #a31515"&gt;&amp;quot;one&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;two&amp;quot;&lt;/span&gt;, &lt;br /&gt;        &lt;span style="color: #a31515"&gt;&amp;quot;three&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;four&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;five&amp;quot;&lt;/span&gt;};&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;PadLeft sample&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;item &lt;span style="color: blue"&gt;in &lt;/span&gt;initialData)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;string &lt;/span&gt;processedItem = item.PadLeft(10, &lt;span style="color: #a31515"&gt;'.'&lt;/span&gt;);&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;'{0}'&amp;quot;&lt;/span&gt;, processedItem);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;PadRight sample&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;item &lt;span style="color: blue"&gt;in &lt;/span&gt;initialData)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;string &lt;/span&gt;processedItem = item.PadRight(10, &lt;span style="color: #a31515"&gt;'.'&lt;/span&gt;);&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;'{0}'&amp;quot;&lt;/span&gt;, processedItem);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Console output:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh6.ggpht.com/igor.zc/SBA3EqG7iLI/AAAAAAAAAaE/vTDHw1I2gYU/padConsole%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="298" alt="padConsole" src="http://lh6.ggpht.com/igor.zc/SBA3FqG7iMI/AAAAAAAAAaM/QGMWbs-KrmE/padConsole_thumb%5B1%5D.png" width="242" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.string.padleft(VS.71).aspx"&gt;String.PadLeft Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.string.padright(VS.71).aspx"&gt;String.PadRight Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/csharp-c-methods-stringpadleft.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh6.ggpht.com/igor.zc/SBA3FqG7iMI/AAAAAAAAAaM/QGMWbs-KrmE/s72-c/padConsole_thumb%5B1%5D.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-7569430358813016599</guid><pubDate>Wed, 23 Apr 2008 09:03:00 +0000</pubDate><atom:updated>2008-04-23T12:03:52.482+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">iterator</category><category domain="http://www.blogger.com/atom/ns#">string</category><title>CSharp (c#) method String.Join().</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;When we should create a string, which consists of array of strings with a separator usually we use a iterator (&lt;strong&gt;for&lt;/strong&gt;, &lt;strong&gt;foreach&lt;/strong&gt;).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;For example,&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;[] stringData = &lt;span style="color: blue"&gt;new string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;&amp;quot;one&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;two&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;three&amp;quot;&lt;/span&gt;};&lt;br /&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;outputContent1 = &lt;span style="color: #a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;item &lt;span style="color: blue"&gt;in &lt;/span&gt;stringData)&lt;br /&gt;{&lt;br /&gt;    outputContent1 += item + &lt;span style="color: #a31515"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;outputContent1 = outputContent1.Remove(outputContent1.Length - 1);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;output #1: {0}&amp;quot;&lt;/span&gt;, outputContent1);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Now, we can use csharp (c#) method &lt;strong&gt;String.Join&lt;/strong&gt;:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;outputContent2 = &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Join(&lt;span style="color: #a31515"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;, stringData);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Print(&lt;span style="color: #a31515"&gt;&amp;quot;output #2: {0}&amp;quot;&lt;/span&gt;, outputContent2);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Output window:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh4.ggpht.com/igor.zc/SA77cqG7iJI/AAAAAAAAAZ0/P3ks83YkCiI/joinOutput%5B4%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="98" alt="joinOutput" src="http://lh5.ggpht.com/igor.zc/SA77d6G7iKI/AAAAAAAAAZ8/4tKvgxh223k/joinOutput_thumb%5B2%5D.png" width="477" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa904288(VS.71).aspx"&gt;String.Join Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/csharp-c-method-stringjoin.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh5.ggpht.com/igor.zc/SA77d6G7iKI/AAAAAAAAAZ8/4tKvgxh223k/s72-c/joinOutput_thumb%5B2%5D.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-185948875837386741</guid><pubDate>Wed, 16 Apr 2008 22:53:00 +0000</pubDate><atom:updated>2008-04-17T01:56:29.942+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net 2</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">generics</category><category domain="http://www.blogger.com/atom/ns#">yield</category><title>Power of Yield, Generics and Array in csharp (C#).</title><description>&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;    When it is necessary to process a array in normal order, we can use statement &lt;strong&gt;foreach&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;But if we want to process the array in reverse order: from last array's element to first (0) element, we have a problem. Sure, we can use loop &lt;strong&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/b80153d8%28VS.80%29.aspx"&gt;for&lt;/a&gt;&lt;/strong&gt; (in reverse order) or call method &lt;strong&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/d3877932.aspx"&gt;Array.Reverse()&lt;/a&gt;&lt;/strong&gt; and reverse elements of original array. Now we can suggest a additional way to get reverse processing of array with help of &lt;strong&gt;generics&lt;/strong&gt; and &lt;strong&gt;yield&lt;/strong&gt;. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Sample: process (output to console) int and string array in "normal" and "reverse" orders:&lt;/span&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;static void &lt;/span&gt;SampleReverese()&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color:blue;"&gt;int&lt;/span&gt;[] intArray = &lt;span style="color:blue;"&gt;new int&lt;/span&gt;[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};&lt;br /&gt;   &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] strArray = &lt;span style="color:blue;"&gt;new string&lt;/span&gt;[] { &lt;span style="color: rgb(163, 21, 21);"&gt;"zero"&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;"one"&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;"two"&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;"three"&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;"four"&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;"five" &lt;/span&gt;};&lt;br /&gt;           &lt;br /&gt;   DisplayArray(intArray);&lt;br /&gt;   DisplayArray(Reverse(intArray));&lt;br /&gt;   DisplayArray(Reverse(strArray));&lt;br /&gt;}&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="font-family:ver;font-size:100%;"&gt;We can note, methods &lt;strong&gt;DisplayArray()&lt;/strong&gt; and &lt;strong&gt;ReverseArray()&lt;/strong&gt; can receive array of any elements.&lt;br /&gt;It is implemented with help of &lt;a href="http://msdn2.microsoft.com/en-us/library/512aeb7t.aspx"&gt;c# generics&lt;/a&gt;.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="font-size:100%;"&gt;Method Display():&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;static void &lt;/span&gt;DisplayArray&amp;lt;T&amp;gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;IEnumerable&lt;/span&gt;&amp;lt;T&amp;gt; displayedArray)&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color: rgb(43, 145, 175);"&gt;Console&lt;/span&gt;.WriteLine();&lt;br /&gt;   &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(T item &lt;span style="color:blue;"&gt;in &lt;/span&gt;displayedArray)&lt;br /&gt;   {&lt;br /&gt;       &lt;span style="color: rgb(43, 145, 175);"&gt;Console&lt;/span&gt;.Write(&lt;span style="color: rgb(163, 21, 21);"&gt;"{0} "&lt;/span&gt;, item);&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="font-family:ver;font-size:100%;"&gt;More interesting how to implement method &lt;strong&gt;Reverse()&lt;/strong&gt; without creation of new array or changing original array.&lt;br /&gt;We use statement yield:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;static &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IEnumerable&lt;/span&gt;&amp;lt;T&amp;gt; Reverse&amp;lt;T&amp;gt;(T[] originalArray)&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color:blue;"&gt;for &lt;/span&gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;i = originalArray.Length - 1; i&amp;gt;=0; i--)&lt;br /&gt;   {&lt;br /&gt;       &lt;span style="color:blue;"&gt;yield return &lt;/span&gt;originalArray[i];&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;span style="font-family:ver;font-size:100%;"&gt;Console:&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SAaDgBBgvMI/AAAAAAAAAZk/agCtozVWBqU/reverseConsole%5B3%5D.png"&gt;&lt;img style="border-width: 0px;" alt="reverseConsole" src="http://lh4.ggpht.com/igor.zc/SAaDhRBgvNI/AAAAAAAAAZs/4iil8oxjadA/reverseConsole_thumb%5B1%5D.png" width="443" border="0" height="117" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Reference:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/512aeb7t.aspx"&gt;yield (C# Reference)&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/512aeb7t.aspx"&gt;Generics (C# Programming Guide)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/d3877932.aspx"&gt;Array.Reverse Method (Array)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ttw7t8t6%28vs.71%29.aspx"&gt;foreach, in&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ttw7t8t6%28vs.71%29.aspx"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt; &lt;/span&gt;&lt;/p&gt;</description><link>http://csharp-tips.blogspot.com/2008/04/power-of-yield-generics-and-array-in.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh4.ggpht.com/igor.zc/SAaDhRBgvNI/AAAAAAAAAZs/4iil8oxjadA/s72-c/reverseConsole_thumb%5B1%5D.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-5873379598954086609</guid><pubDate>Wed, 16 Apr 2008 04:20:00 +0000</pubDate><atom:updated>2008-04-16T07:20:07.961+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">string</category><title>How to remove leading and trailing characters from string in csharp (c#).</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;To remove leading and trailing characters from string in csharp (c#) we can use methods &lt;strong&gt;String.Trim()&lt;/strong&gt;, &lt;strong&gt;String.TrimEnd()&lt;/strong&gt; or &lt;strong&gt;String.TrimStart()&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Samples:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;originalLine = &lt;span style="color: #a31515"&gt;&amp;quot; message with space, &amp;quot;&lt;/span&gt;;&lt;br /&gt;actualLine = originalLine.Trim();&lt;br /&gt;DisplayMessage(originalLine, actualLine);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/igor.zc/SAV-XhBgvEI/AAAAAAAAAYM/yhiYa5d1Ozs/trimOutput17.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="73" alt="trimOutput1" src="http://lh4.ggpht.com/igor.zc/SAV-YhBgvFI/AAAAAAAAAYU/dcCCMeDcOUs/trimOutput1_thumb3.png" width="442" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;originalLine = &lt;span style="color: #a31515"&gt;&amp;quot; message with space, &amp;quot;&lt;/span&gt;;&lt;br /&gt;actualLine = originalLine.TrimEnd();&lt;br /&gt;DisplayMessage(originalLine, actualLine);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SAV-ZRBgvGI/AAAAAAAAAYc/FtfHm3PsuXQ/trimOutput28.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="69" alt="trimOutput2" src="http://lh3.ggpht.com/igor.zc/SAV-aRBgvHI/AAAAAAAAAYk/Lv5yXrB1QPA/trimOutput2_thumb4.png" width="443" border="0" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;originalLine = &lt;span style="color: #a31515"&gt;&amp;quot; message with space, &amp;quot;&lt;/span&gt;;&lt;br /&gt;actualLine = originalLine.TrimStart();&lt;br /&gt;DisplayMessage(originalLine, actualLine);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh6.ggpht.com/igor.zc/SAV-bBBgvII/AAAAAAAAAYs/BBayXEnqYQ8/trimOutput310.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="81" alt="trimOutput3" src="http://lh6.ggpht.com/igor.zc/SAV-cBBgvJI/AAAAAAAAAY0/orCayYbXHV0/trimOutput3_thumb6.png" width="444" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;originalLine = &lt;span style="color: #a31515"&gt;&amp;quot; message with space, &amp;quot;&lt;/span&gt;;&lt;br /&gt;actualLine = originalLine.Trim(&lt;span style="color: blue"&gt;new char&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;' '&lt;/span&gt;, &lt;span style="color: #a31515"&gt;',' &lt;/span&gt;});&lt;br /&gt;DisplayMessage(originalLine, actualLine);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/igor.zc/SAV-chBgvKI/AAAAAAAAAY8/9es0VSVA1ic/trimOutput43.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="59" alt="trimOutput4" src="http://lh4.ggpht.com/igor.zc/SAV-dhBgvLI/AAAAAAAAAZE/_P1ogfyI5T8/trimOutput4_thumb1.png" width="442" border="0" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sometimes interesting to see implementation of C# methods.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;So, let's see method String.Trim(Char[]):&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: green"&gt;// Removes a string of characters from the ends of this string. &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;String &lt;/span&gt;Trim(&lt;span style="color: blue"&gt;params char&lt;/span&gt;[] trimChars) {&lt;br /&gt;    &lt;span style="color: blue"&gt;if &lt;/span&gt;(&lt;span style="color: blue"&gt;null&lt;/span&gt;==trimChars || trimChars.Length == 0) { &lt;br /&gt;        trimChars=WhitespaceChars;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;return &lt;/span&gt;TrimHelper(trimChars,TrimBoth);&lt;br /&gt;} &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;and basic method &lt;strong&gt;TrimHelper()&lt;/strong&gt;:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private &lt;/span&gt;&lt;span style="color: #2b91af"&gt;String &lt;/span&gt;TrimHelper(&lt;span style="color: blue"&gt;char&lt;/span&gt;[] trimChars, &lt;span style="color: blue"&gt;int &lt;/span&gt;trimType) { &lt;br /&gt;    &lt;span style="color: green"&gt;//end will point to the first non-trimmed character on the right&lt;br /&gt;    //start will point to the first non-trimmed character on the Left&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;int &lt;/span&gt;end = &lt;span style="color: blue"&gt;this&lt;/span&gt;.Length-1;&lt;br /&gt;    &lt;span style="color: blue"&gt;int &lt;/span&gt;start=0; &lt;br /&gt;&lt;br /&gt;    &lt;span style="color: green"&gt;//Trim specified characters. &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;if &lt;/span&gt;(trimType !=TrimTail)  { &lt;br /&gt;        &lt;span style="color: blue"&gt;for &lt;/span&gt;(start=0; start &amp;lt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Length; start++) {&lt;br /&gt;            &lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; &lt;br /&gt;            &lt;span style="color: blue"&gt;char &lt;/span&gt;ch = &lt;span style="color: blue"&gt;this&lt;/span&gt;[start];&lt;br /&gt;            &lt;span style="color: blue"&gt;for&lt;/span&gt;( i = 0; i &amp;lt; trimChars.Length; i++) {&lt;br /&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt;( trimChars[i] == ch) &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;br /&gt;            } &lt;br /&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt;( i == trimChars.Length) { &lt;span style="color: green"&gt;// the character is not white space&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;; &lt;br /&gt;            } &lt;br /&gt;        }&lt;br /&gt;    } &lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;if &lt;/span&gt;(trimType !=TrimHead) {&lt;br /&gt;        &lt;span style="color: blue"&gt;for &lt;/span&gt;(end= Length -1; end &amp;gt;= start;  end--) {&lt;br /&gt;            &lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; &lt;br /&gt;            &lt;span style="color: blue"&gt;char &lt;/span&gt;ch = &lt;span style="color: blue"&gt;this&lt;/span&gt;[end];&lt;br /&gt;            &lt;span style="color: blue"&gt;for&lt;/span&gt;(i = 0; i &amp;lt; trimChars.Length; i++) { &lt;br /&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt;( trimChars[i] == ch) &lt;span style="color: blue"&gt;break&lt;/span&gt;; &lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt;( i == trimChars.Length) { &lt;span style="color: green"&gt;// the character is not white space &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    } &lt;br /&gt;&lt;br /&gt;    &lt;span style="color: green"&gt;//Create a new STRINGREF and initialize it from the range determined above. &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;int &lt;/span&gt;len = end -start + 1; &lt;br /&gt;    &lt;span style="color: blue"&gt;if &lt;/span&gt;(len == &lt;span style="color: blue"&gt;this&lt;/span&gt;.Length) {&lt;br /&gt;        &lt;span style="color: green"&gt;// Don't allocate a new string is the trimmed string has not changed. &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;return this&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;else &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;if&lt;/span&gt;( len == 0) { &lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Empty;&lt;br /&gt;        } &lt;br /&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;InternalSubString(start, len, &lt;span style="color: blue"&gt;false&lt;/span&gt;); &lt;br /&gt;    }&lt;br /&gt;} &lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;References:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.string.trim.aspx"&gt;String.Trim Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/how-to-remove-leading-and-trailing.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh4.ggpht.com/igor.zc/SAV-YhBgvFI/AAAAAAAAAYU/dcCCMeDcOUs/s72-c/trimOutput1_thumb3.png" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-1788870314265697558</guid><pubDate>Tue, 15 Apr 2008 21:39:00 +0000</pubDate><atom:updated>2008-04-16T00:39:33.668+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">string</category><title>Split string to array of strings in csharp (c#).</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; When we should divide a string to array of strings by a specific delimiters, we can use method &lt;strong&gt;String.Splt()&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Samples:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;font size="4"&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;line = &lt;span style="color: #a31515"&gt;&amp;quot;name,id=1234,,description,user=Jon&amp;quot;&lt;/span&gt;;&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;[] lineItems = line.Split(&lt;span style="color: blue"&gt;new char&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;',' &lt;/span&gt;});&lt;br /&gt;DisplayOutput(line, lineItems);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SAUfpRBgu6I/AAAAAAAAAW8/DOOClJTIzHk/splitOutput14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="131" alt="splitOutput1" src="http://lh4.ggpht.com/igor.zc/SAUfshBgu7I/AAAAAAAAAXE/OBjasSWySBA/splitOutput1_thumb2.png" width="473" border="0" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;lineItems = line.Split(&lt;span style="color: blue"&gt;new char&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;','&lt;/span&gt;, &lt;span style="color: #a31515"&gt;'=' &lt;/span&gt;});&lt;br /&gt;DisplayOutput(line, lineItems);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SAUftRBgu8I/AAAAAAAAAXM/rvduOyHH6eA/splitOutput23.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="157" alt="splitOutput2" src="http://lh5.ggpht.com/igor.zc/SAUfuxBgu9I/AAAAAAAAAXU/I31ZFyJg9h8/splitOutput2_thumb1.png" width="468" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;lineItems = line.Split(&lt;span style="color: blue"&gt;new char&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;','&lt;/span&gt;, &lt;span style="color: #a31515"&gt;'=' &lt;/span&gt;}, 2);&lt;br /&gt;DisplayOutput(line, lineItems);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/igor.zc/SAUfwRBgu-I/AAAAAAAAAXc/uZYbjtk7JDw/splitOutput33.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="83" alt="splitOutput3" src="http://lh5.ggpht.com/igor.zc/SAUfzxBgu_I/AAAAAAAAAXk/LfPW9F3O2J8/splitOutput3_thumb1.png" width="470" border="0" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;lineItems = line.Split(&lt;span style="color: blue"&gt;new char&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;',' &lt;/span&gt;}, &lt;span style="color: #2b91af"&gt;StringSplitOptions&lt;/span&gt;.RemoveEmptyEntries);&lt;br /&gt;DisplayOutput(line, lineItems);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/igor.zc/SAUf0hBgvAI/AAAAAAAAAXs/HiurmUXhyi8/splitOutput43.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="splitOutput4" src="http://lh4.ggpht.com/igor.zc/SAUf1hBgvBI/AAAAAAAAAX0/LksPb96d0E0/splitOutput4_thumb1.png" width="473" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;lineItems = line.Split(&lt;span style="color: blue"&gt;new string&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;id=&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;user=&amp;quot;&lt;/span&gt;}, &lt;span style="color: #2b91af"&gt;StringSplitOptions&lt;/span&gt;.RemoveEmptyEntries);&lt;br /&gt;DisplayOutput(line, lineItems);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/igor.zc/SAUgkBBgvCI/AAAAAAAAAX8/AbVcUTUy6pY/splitOutput54.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="120" alt="splitOutput5" src="http://lh6.ggpht.com/igor.zc/SAUglBBgvDI/AAAAAAAAAYE/yQfRkIM7FKM/splitOutput5_thumb2.png" width="482" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;References:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.string.split.aspx"&gt;String.Split Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/split-string-to-array-of-strings-in.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh4.ggpht.com/igor.zc/SAUfshBgu7I/AAAAAAAAAXE/OBjasSWySBA/s72-c/splitOutput1_thumb2.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-2158395245062762489</guid><pubDate>Tue, 15 Apr 2008 03:51:00 +0000</pubDate><atom:updated>2008-04-29T07:16:21.344+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net 2</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">File</category><category domain="http://www.blogger.com/atom/ns#">iterator</category><category domain="http://www.blogger.com/atom/ns#">Path</category><category domain="http://www.blogger.com/atom/ns#">ReferencesManager</category><category domain="http://www.blogger.com/atom/ns#">string</category><category domain="http://www.blogger.com/atom/ns#">yield</category><title>Utility to check .NET assembly references</title><description>&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;     Sometimes, when a complex project (many source solutions, dlls, references) is built and run, then we receive a problem with references (&lt;strong&gt;here we don't speak about signed assemblies&lt;/strong&gt;). For example, all dlls has a reference to basic .dll, but a specific .dll has a reference to obsolete version of the basic .dll.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Sample:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;strong&gt;MainUtils&lt;/strong&gt; has a reference to &lt;strong&gt;Utils1&lt;/strong&gt; (v2.0.0.0) and Utils2 (v2.0.0.0), but &lt;strong&gt;Utils2&lt;/strong&gt; (v2.0.0.0) has a reference to obsolete version of &lt;strong&gt;Utils1&lt;/strong&gt; (&lt;span style="color:#ff0000;"&gt;v1.0.0.0&lt;/span&gt;). See folders &lt;strong&gt;TestData4References&lt;/strong&gt; in solution &lt;a href="http://code.google.com/p/csharp-tips/"&gt;csharp-samples&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://lh5.ggpht.com/igor.zc/SAQmJBBgu2I/AAAAAAAAAWc/Gu41F2y1KWE/referenceDiagram3.png"&gt;&lt;img style="border-width: 0px;" alt="referenceDiagram" src="http://lh6.ggpht.com/igor.zc/SAQmKRBgu3I/AAAAAAAAAWk/jsdCkWK9ekY/referenceDiagram_thumb1.png" width="443" border="0" height="324" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;When a MainUtils will be run, then a error can be shown.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Utility ReferencesManager.exe helps to show all references and output list of all assemblies full names. This information helps to see same assemblies with different versions.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;To start the utility it is necessary to type name of initial executable (or .dll) file:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;ReferencesManager.exe MainUtils.exe &amp;gt; MainUtils.log&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Content of MainUtils.log:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/igor.zc/SAQmNBBgu4I/AAAAAAAAAWs/kPb1uXuUw-U/mainUtilsLog4.png"&gt;&lt;img style="border-width: 0px;" alt="mainUtilsLog" src="http://lh3.ggpht.com/igor.zc/SAQmOhBgu5I/AAAAAAAAAW0/L_fhzCeG8rg/mainUtilsLog_thumb2.png" width="511" border="0" height="290" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Received log allows to find &lt;strong&gt;Utils1&lt;/strong&gt; with different versions &lt;strong&gt;1.0.0.0&lt;/strong&gt; and &lt;strong&gt;2.0.0.0 &lt;/strong&gt;and &lt;strong&gt;Utils2&lt;/strong&gt;, which references to &lt;strong&gt;Utils1&lt;/strong&gt; version &lt;strong&gt;1.0.0.0&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Limitations of version 1.0.1:&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;The utility finds assemblies in GAC and in folder of initial assembly only.&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;The utility doesn't find referenced (in c# source project), but actually not used assemblies.&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;The utility doesn't output list of problematic assemblies.&lt;/span&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://csharp-tips.googlecode.com/files/ReferencesManager.exe"&gt;Downloading ReferencesManager.exe.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;References:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector for .NET&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://www.gliffy.com/"&gt;Create and Share Flow Charts, Diagrams and More&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://csharp-tips.blogspot.com/2008/04/utility-to-check-net-assembly.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh6.ggpht.com/igor.zc/SAQmKRBgu3I/AAAAAAAAAWk/jsdCkWK9ekY/s72-c/referenceDiagram_thumb1.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-5339998572316255569</guid><pubDate>Fri, 11 Apr 2008 05:04:00 +0000</pubDate><atom:updated>2008-04-11T08:07:25.842+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net 2</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">yield</category><title>Mainstream usage of yield (c#).</title><description>&lt;p&gt;&lt;span style="font-family:verd;font-size:100%;"&gt;    Let's review when csharp statement &lt;strong&gt;yield&lt;/strong&gt; can be really useful. When we need process list (for example, display or calculate a parameter) of generated data we can use simple way and create array:&lt;/span&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;static public int&lt;/span&gt;[] PowerByArray(&lt;span style="color:blue;"&gt;int &lt;/span&gt;number, &lt;span style="color:blue;"&gt;int &lt;/span&gt;exponent)&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color:blue;"&gt;int&lt;/span&gt;[] results = &lt;span style="color:blue;"&gt;new int&lt;/span&gt;[exponent];&lt;br /&gt;   &lt;span style="color:blue;"&gt;int &lt;/span&gt;result = 1;&lt;br /&gt;   &lt;span style="color:blue;"&gt;for &lt;/span&gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;i = 0; i &amp;lt; exponent; i++)&lt;br /&gt;   {&lt;br /&gt;       result *= number;&lt;br /&gt;       results[i] = result;&lt;br /&gt;   }&lt;br /&gt;   &lt;span style="color:blue;"&gt;return &lt;/span&gt;results;&lt;br /&gt;}&lt;/pre&gt;&lt;span style="font-size:100%;"&gt;call method PowerByArray:&lt;/span&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.Write(&lt;span style="color: rgb(163, 21, 21);"&gt;"powers list (by array): "&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[] powers = &lt;span style="color: rgb(43, 145, 175);"&gt;PowerCalculator&lt;/span&gt;.PowerByArray(2, 10);&lt;br /&gt;&lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;value &lt;span style="color:blue;"&gt;in &lt;/span&gt;powers)&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.Write(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color: rgb(163, 21, 21);"&gt;"{0} "&lt;/span&gt;, value));&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="font-family:verd;font-size:100%;"&gt;and next result will be shown:&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/igor.zc/R_7xbMf7taI/AAAAAAAAAV8/3eJ4wD09XB4/power_by_array%5B3%5D.png"&gt;&lt;img style="border: 0px none ;" alt="power_by_array" src="http://lh6.ggpht.com/igor.zc/R_7xcMf7tbI/AAAAAAAAAWE/iVMBoUtQXwI/power_by_array_thumb%5B1%5D.png" width="452" border="0" height="44" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verd;font-size:100%;"&gt;The way is clear, but it requests to create array. Frequently we cannot allow to create a array, because number of elements and/or size of needed memory.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Usage of &lt;strong&gt;yield&lt;/strong&gt; helps us to avoid creation of array:&lt;/span&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;static public &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IEnumerable &lt;/span&gt;Power(&lt;span style="color:blue;"&gt;int &lt;/span&gt;number, &lt;span style="color:blue;"&gt;int &lt;/span&gt;exponent)&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color:blue;"&gt;int &lt;/span&gt;result = 1;&lt;br /&gt;   &lt;span style="color:blue;"&gt;for &lt;/span&gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;i = 0; i &amp;lt; exponent; i++)&lt;br /&gt;   {&lt;br /&gt;       &lt;span style="color:blue;"&gt;yield return &lt;/span&gt;result *= number;&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;&lt;span style="font-family:verd;font-size:100%;"&gt;Calling method &lt;strong&gt;Power&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.Write(&lt;span style="color: rgb(163, 21, 21);"&gt;"powers list (by array): "&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[] powers = &lt;span style="color: rgb(43, 145, 175);"&gt;PowerCalculator&lt;/span&gt;.PowerByArray(2, 10);&lt;br /&gt;&lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;value &lt;span style="color:blue;"&gt;in &lt;/span&gt;powers)&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.Write(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color: rgb(163, 21, 21);"&gt;"{0} "&lt;/span&gt;, value));&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;);&lt;/pre&gt;&lt;p&gt;&lt;span style="font-family:verd;font-size:100%;"&gt;generates next output:&lt;/span&gt; &lt;/p&gt;&lt;a href="http://lh4.ggpht.com/igor.zc/R_7xcsf7tcI/AAAAAAAAAWM/O3t0ABUeEzs/power_by_yield%5B3%5D.png"&gt;&lt;img style="border: 0px none ;" alt="power_by_yield" src="http://lh4.ggpht.com/igor.zc/R_7xdsf7tdI/AAAAAAAAAWU/8m3YM_kPBJY/power_by_yield_thumb%5B1%5D.png" width="471" border="0" height="72" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verd;font-size:100%;"&gt;Reference:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/9k7k7cf0%28VS.80%29.aspx"&gt;yield (C# Reference)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://csharp-tips.blogspot.com/2008/04/statement.html"&gt;simple example of yield (reverse)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://csharp-tips.blogspot.com/2008/04/loops-and-iterators-in-c-5-ways.html"&gt;Loops and iterators in c# (5 ways)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://csharp-tips.blogspot.com/2008/04/mainstream-usage-of-yield-c.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh6.ggpht.com/igor.zc/R_7xcMf7tbI/AAAAAAAAAWE/iVMBoUtQXwI/s72-c/power_by_array_thumb%5B1%5D.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-7103419597952064191</guid><pubDate>Thu, 10 Apr 2008 22:11:00 +0000</pubDate><atom:updated>2008-04-11T01:11:38.028+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net 2</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">yield</category><title>Statement &amp;quot;yield&amp;quot;.</title><description>&lt;p&gt;&lt;font face="ver" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; When we want to use operator &lt;strong&gt;foreach&lt;/strong&gt;, but want to hide details of implementation we can use interface &lt;strong&gt;IEnumerable&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Review next sample:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Let's display list of cities:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Cities &lt;/span&gt;cities = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Cities&lt;/span&gt;();&lt;br /&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;city &lt;span style="color: blue"&gt;in &lt;/span&gt;cities)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;city: &amp;quot; &lt;/span&gt;+ city);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="3"&gt;where class Cities is implemented:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Cities&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;readonly string&lt;/span&gt;[] cities = { &lt;span style="color: #a31515"&gt;&amp;quot;London&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Paris&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Rome&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Jerusalem&amp;quot; &lt;/span&gt;} ;&lt;br /&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerator &lt;/span&gt;GetEnumerator()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;cities.GetEnumerator();&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="3"&gt;&lt;a href="http://lh4.ggpht.com/igor.zc/R_6Qjsf7tWI/AAAAAAAAAVc/EG_qWOsljm0/normalOrder%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="85" alt="normalOrder" src="http://lh3.ggpht.com/igor.zc/R_6Qkcf7tXI/AAAAAAAAAVk/a9XV5_ToDY8/normalOrder_thumb.png" width="152" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font size="3"&gt;Seems enough simple.&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="3"&gt;Now we need display cities in reverse order&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Reverse order: &amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;city &lt;span style="color: blue"&gt;in &lt;/span&gt;cities.Reverese)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;city: &amp;quot; &lt;/span&gt;+ city);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="3"&gt;&lt;a href="http://lh6.ggpht.com/igor.zc/R_6QlMf7tYI/AAAAAAAAAVs/2l6mQ5VUfzk/reverseOrder%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="160" alt="reverseOrder" src="http://lh6.ggpht.com/igor.zc/R_6QmMf7tZI/AAAAAAAAAV0/pSRhQMotcqs/reverseOrder_thumb.png" width="125" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="3"&gt;To receive reverse order we can add property &lt;strong&gt;Reverse&lt;/strong&gt;:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; Reverese&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;get&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = cities.Length - 1; i &amp;gt;= 0; i--)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;yield return &lt;/span&gt;cities[i];&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="ver" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="ver" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/9k7k7cf0(VS.80).aspx"&gt;yield (C# Reference)&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163970.aspx"&gt;Create Elegant Code with Anonymous Methods, Iterators and Partial Classes.&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/statement.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh3.ggpht.com/igor.zc/R_6Qkcf7tXI/AAAAAAAAAVk/a9XV5_ToDY8/s72-c/normalOrder_thumb.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-2974041533064945965</guid><pubDate>Mon, 07 Apr 2008 20:58:00 +0000</pubDate><atom:updated>2008-04-07T23:58:12.078+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">.Net 2</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">iterator</category><category domain="http://www.blogger.com/atom/ns#">yield</category><title>Loops and iterators in c# (5 ways).</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;It is suggested to inspect several ways to implement loop in c#.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;For example, we need display all days: Sunday .. Saturday with help of loop (or iterators).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Operator For:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;static void &lt;/span&gt;sample_For_Days()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;index = 0; index &amp;lt; &lt;span style="color: #2b91af"&gt;DaysNames&lt;/span&gt;.DAYS.Length; index++)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;string &lt;/span&gt;day = &lt;span style="color: #2b91af"&gt;DaysNames&lt;/span&gt;.DAYS[index];&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.Write(day + &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Operator foreach:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;day &lt;span style="color: blue"&gt;in &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DaysNames&lt;/span&gt;.DAYS)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.Write(day + &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Method Array.Foreach:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Array&lt;/span&gt;.ForEach(&lt;span style="color: #2b91af"&gt;DaysNames&lt;/span&gt;.DAYS, &lt;br /&gt;    &lt;span style="color: blue"&gt;delegate&lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;day) { &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.Write(day + &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;); });&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Operator ForEach with help of interfaces IEnumerable and IEnumerator&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;class implementation&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DaysOfTheWeek_IEnumerator &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;IEnumerator&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;int &lt;/span&gt;index;&lt;br /&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;DaysOfTheWeek_IEnumerator()&lt;br /&gt;    {&lt;br /&gt;        Reset();&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;#region &lt;/span&gt;IEnumerable&lt;br /&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerator &lt;/span&gt;GetEnumerator()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;return this&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;#endregion&lt;br /&gt;&lt;br /&gt;    #region &lt;/span&gt;IEnumerator&lt;br /&gt;    &lt;span style="color: blue"&gt;public bool &lt;/span&gt;MoveNext()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;(++index &amp;lt; 7);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;public void &lt;/span&gt;Reset()&lt;br /&gt;    {&lt;br /&gt;        index = -1;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;public object &lt;/span&gt;Current&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DaysNames&lt;/span&gt;.DAYS[index]; }&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;#endregion&lt;br /&gt;&lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;usage of foreach&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;DaysOfTheWeek_IEnumerator &lt;/span&gt;week = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DaysOfTheWeek_IEnumerator&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;day &lt;span style="color: blue"&gt;in &lt;/span&gt;week)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.Write(day + &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Operator ForEach with help of interfaces IEnumerable and statement yield:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;class implementation:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DaysOfTheWeek_yield &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;IEnumerable&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;#region &lt;/span&gt;IEnumerable&lt;br /&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerator &lt;/span&gt;GetEnumerator()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &amp;lt; &lt;span style="color: #2b91af"&gt;DaysNames&lt;/span&gt;.DAYS.Length; i++)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;yield return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DaysNames&lt;/span&gt;.DAYS[i];&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;#endregion&lt;br /&gt;&lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;usage of foreach:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;DaysOfTheWeek_IEnumerator &lt;/span&gt;week = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DaysOfTheWeek_IEnumerator&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;string &lt;/span&gt;day &lt;span style="color: blue"&gt;in &lt;/span&gt;week)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.Write(day + &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Console output shows, all methods display same results:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.google.com/igor.zc/R_qKaOKsDhI/AAAAAAAAAVM/XoBdP1gfjpM/greenshot_2008-04-07_10-41-49%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="147" alt="greenshot_2008-04-07_10-41-49" src="http://lh5.google.com/igor.zc/R_qK4uKsDiI/AAAAAAAAAVU/vun8pvR6tSI/greenshot_20080407_104149_thumb1.png" width="560" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ttw7t8t6.aspx"&gt;foreach, in (C# Reference)&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/dscyy5s0(VS.80).aspx"&gt;Iterators (C# Programming Guide)&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/9k7k7cf0(VS.80).aspx"&gt;yeild (C# Reference)&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/loops-and-iterators-in-c-5-ways.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-2484253492626451115</guid><pubDate>Sun, 06 Apr 2008 20:04:00 +0000</pubDate><atom:updated>2008-04-06T23:04:43.863+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">Debug</category><category domain="http://www.blogger.com/atom/ns#">File</category><title>How to listen file change notification.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; When we want to receive a notifications about file system changes, we can use class FileSystemWatcher.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Code sample:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;testFolder = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempPath();&lt;br /&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;testFilePath = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(testFolder, &lt;span style="color: #a31515"&gt;&amp;quot;test.tst&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.Delete(testFilePath);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;FileSystemWatcher &lt;/span&gt;watcher = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;FileSystemWatcher&lt;/span&gt;(testFolder, &lt;span style="color: #a31515"&gt;&amp;quot;*.tst&amp;quot;&lt;/span&gt;))&lt;br /&gt;{&lt;br /&gt;    watcher.NotifyFilter = &lt;br /&gt;        &lt;span style="color: #2b91af"&gt;NotifyFilters&lt;/span&gt;.LastAccess | &lt;span style="color: #2b91af"&gt;NotifyFilters&lt;/span&gt;.LastWrite | &lt;br /&gt;        &lt;span style="color: #2b91af"&gt;NotifyFilters&lt;/span&gt;.FileName | &lt;span style="color: #2b91af"&gt;NotifyFilters&lt;/span&gt;.DirectoryName |&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;NotifyFilters&lt;/span&gt;.CreationTime | &lt;span style="color: #2b91af"&gt;NotifyFilters&lt;/span&gt;.Attributes |&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;NotifyFilters&lt;/span&gt;.Size | &lt;span style="color: #2b91af"&gt;NotifyFilters&lt;/span&gt;.Security;&lt;br /&gt;    watcher.Created += OnFileChanged;&lt;br /&gt;    watcher.Changed += OnFileChanged;&lt;br /&gt;    watcher.Deleted += OnFileChanged;&lt;br /&gt;    watcher.EnableRaisingEvents = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.WriteAllText(testFilePath, &lt;span style="color: #a31515"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.AppendAllText(testFilePath, &lt;span style="color: #a31515"&gt;&amp;quot;additional text&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.Delete(testFilePath);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Output window content:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh3.google.com/igor.zc/R_ks1eKsDfI/AAAAAAAAAU8/aRAY_lMVj60/FileSystemWatcherOutputContent%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="99" alt="FileSystemWatcherOutputContent" src="http://lh4.google.com/igor.zc/R_ks2uKsDgI/AAAAAAAAAVE/QGF7FDgoZvQ/FileSystemWatcherOutputContent_thumb%5B1%5D.png" width="539" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" color="#ff0000" size="3"&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" color="#000000" size="3"&gt;Unfortunately, my experience shows, that &lt;font color="#ff0000"&gt;FilesystemWatcher doesn't work absolutely correct&lt;/font&gt;. In many cases, it doesn't catch a file changing.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" color="#ff0000" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.filesystemwatcher(VS.71).aspx"&gt;FileSystemWatcher Class&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/how-to-listen-file-change-notification.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-1277658732244344776</guid><pubDate>Thu, 03 Apr 2008 19:24:00 +0000</pubDate><atom:updated>2008-04-03T22:24:20.119+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">File</category><category domain="http://www.blogger.com/atom/ns#">Path</category><title>How to create unique temporary file name and folder.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://csharp-tips.blogspot.com/2008/04/how-to-receive-temporary-path-and-file.html"&gt;As we investigated&lt;/a&gt;, it is possible to get temporary Windows folder by method Path.GetTempPath and create temporary file by method Path.GetTempFileName().&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Unfortunately, these methods cannot help us to create &lt;strong&gt;unique&lt;/strong&gt; temporary folder or temporary file (method Path.GetTempFileName() can generate only 65 536 unique file names at the same time).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;It is suggested to generate unique path and name to use a globally unique identifier (&lt;a href="http://en.wikipedia.org/wiki/GUID"&gt;GUID&lt;/a&gt;) with help of method &lt;a href="http://msdn2.microsoft.com/en-us/library/system.guid.newguid.aspx"&gt;Guid.NewGuid()&lt;/a&gt;. &amp;quot;&lt;em&gt;Such an identifier has a very low probability of being duplicated.&lt;/em&gt;&amp;quot; by MSDN.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;Method, which can generate unique temporary folder:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;static string &lt;/span&gt;GetUniquePath()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;string &lt;/span&gt;uniquePath;&lt;br /&gt;    &lt;span style="color: blue"&gt;do&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Guid &lt;/span&gt;guid = &lt;span style="color: #2b91af"&gt;Guid&lt;/span&gt;.NewGuid();&lt;br /&gt;        &lt;span style="color: blue"&gt;string &lt;/span&gt;uniqueSubFolderName = guid.ToString();&lt;br /&gt;        uniquePath = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempPath() + uniqueSubFolderName;&lt;br /&gt;    } &lt;span style="color: blue"&gt;while &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.Exists(uniquePath));&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.CreateDirectory(uniquePath);&lt;br /&gt;    &lt;span style="color: blue"&gt;return &lt;/span&gt;uniquePath;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;font face="Verdana" size="3"&gt;The method generated and created such paths:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;em&gt;C:\Documents and Settings\name-f\Local Settings\Temp\b0dc9b66-a32c-586c-815b-dfed844df58c&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;em&gt;C:\Documents and Settings\name-f\Local Settings\Temp\18a09210-9107-4a19-ab11-a246c36fec54&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;By the same way, can be generated and created temporary file path.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Important notes:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;1. Don't forget to delete created temporary folder and files after usage.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;2. Published method GetUniquePath is not protected for multi-threaded usage.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.guid.aspx"&gt;Guid Structure&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.guid.newguid.aspx"&gt;Guid.NewGuid Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/how-to-create-unique-temporary-file.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-3192065331543121282</guid><pubDate>Wed, 02 Apr 2008 21:14:00 +0000</pubDate><atom:updated>2008-04-03T00:16:08.067+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">Debug</category><category domain="http://www.blogger.com/atom/ns#">File</category><title>How to redirect Trace output.</title><description>&lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;        &lt;a href="http://csharp-tips.blogspot.com/2008/03/sample-of-c-application-tracing-class.html"&gt;As we know&lt;/a&gt;, for tracing we can use method &lt;strong&gt;Trace.WriteLine()&lt;/strong&gt;. But usually, we want to avoid a creating of detailed log file in production mode and to enable the tracing for testing and debugging purposes only by a configuration changing. So, we should find a way to redirect output of &lt;strong&gt;Trace.WriteLine()&lt;/strong&gt; from standard output to a log file and configures the redirection without rebuilding of application.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;        Let's write next c# code:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163, 21, 21);"&gt;"messageTrace"&lt;/span&gt;);   &lt;br /&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163, 21, 21);"&gt;"messageError"&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;"Error"&lt;/span&gt;);   &lt;br /&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Trace&lt;/span&gt;.TraceError(&lt;span style="color: rgb(163, 21, 21);"&gt;"traceErrorMessage"&lt;/span&gt;);&lt;/p&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;and define .config file:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.google.com/igor.zc/R_P3KuKsDbI/AAAAAAAAAUc/zJQQWrhrKt4/redirectTrace_va_ConfigFile%5B6%5D.png"&gt;&lt;img style="border: 0px none ;" alt="redirectTrace_va_ConfigFile" src="http://lh5.google.com/igor.zc/R_P3MeKsDcI/AAAAAAAAAUk/7S36YtWYPF8/redirectTrace_va_ConfigFile_thumb%5B4%5D.png" border="0" height="305" width="718" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Thus, we delete "&lt;strong&gt;Default&lt;/strong&gt;" Trace Listener and add our "&lt;strong&gt;myListener&lt;/strong&gt;' of type &lt;strong&gt;TextWriterTraceListener&lt;/strong&gt; with parameter (log file name) &lt;strong&gt;c:\myListener.log&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Additionally, attribute "&lt;strong&gt;autoflush&lt;/strong&gt;" is set in &lt;strong&gt;True&lt;/strong&gt; and method &lt;strong&gt;Trace.WriteLine()&lt;/strong&gt; will store input messages to log file immediately.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Content of file myListener.log:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/igor.zc/R_P3NeKsDdI/AAAAAAAAAUs/dwsKgiC_hZs/myListenerLogFileContent%5B3%5D.png"&gt;&lt;img style="border: 0px none ;" alt="myListenerLogFileContent" src="http://lh3.google.com/igor.zc/R_P3S-KsDeI/AAAAAAAAAU0/YqEOFpWOK5w/myListenerLogFileContent_thumb%5B1%5D.png" border="0" height="172" width="457" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;Reference:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Verdana;font-size:100%;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener%28VS.80%29.aspx"&gt;How to configure Trace listener&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;</description><link>http://csharp-tips.blogspot.com/2008/04/how-to-redirect-trace-output.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-5136221563337657991</guid><pubDate>Tue, 01 Apr 2008 20:48:00 +0000</pubDate><atom:updated>2008-04-01T23:48:25.405+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">File</category><category domain="http://www.blogger.com/atom/ns#">Path</category><title>How to receive temporary path and file name (c#).</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; To receive standard Windows temporary path we can use c# method Path.GetTempPath().&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;To receive uniquely temporary file we can use method Path.GetTempFileName(). The method &lt;strong&gt;&lt;font color="#ff0000"&gt;creates&lt;/font&gt;&lt;/strong&gt; a zero-byte in temporary folder and returns a full path of that file. Path of the file is created by format: &amp;lt;temporary folder&amp;gt;\tmp&amp;lt;4 hex symbols&amp;gt;.tmp (for example, &amp;lt;temporary folder&amp;gt;\tmpF1FB.tmp).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160; Let's investigate how a method GetTempFileName creates a uniquely temp file:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;tempFolder = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempPath();&lt;br /&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;uniqueTempFileName = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempFileName();&lt;br /&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;tempFolder_via_Environment = &lt;span style="color: #2b91af"&gt;Environment&lt;/span&gt;.GetEnvironmentVariable(&lt;span style="color: #a31515"&gt;&amp;quot;TEMP&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;tempFolder: &amp;quot; &lt;/span&gt;+ tempFolder);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;tempFolder_via_Environment: &amp;quot; &lt;/span&gt;+ tempFolder_via_Environment);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;uniqTempFileName: &amp;quot; &lt;/span&gt;+ uniqueTempFileName);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &amp;lt; 0xFFFF; i++)&lt;br /&gt;{&lt;br /&gt;    uniqueTempFileName = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempFileName();&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;uniqTempFileName: &amp;quot; &lt;/span&gt;+ uniqueTempFileName);&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.WriteLine(&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;File {0} exists: {1}&amp;quot;&lt;/span&gt;, uniqueTempFileName, &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.Exists(uniqueTempFileName)));&lt;br /&gt;}&lt;br /&gt;&lt;font face="v" size="3"&gt;Output Window:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://lh4.google.com/igor.zc/R_KfdeKsDVI/AAAAAAAAATs/quGw7DWL6Mo/output13.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="69" alt="output1" src="http://lh4.google.com/igor.zc/R_KfeeKsDWI/AAAAAAAAAT0/1ILDloWpP7w/output1_thumb1.png" width="431" border="0" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;So, we can see rule, how GetTempFileName builds file name: &amp;quot;tmp&amp;quot; + counter + &amp;quot;.tmp&amp;quot;. If a&amp;#160; file with next temporary file name exists, then GetTempFileName will generate next temporary file name.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;File with name tmp3DBA.tmp was created manually and see result (tmp3D9, &lt;strong&gt;tmp3DBB&lt;/strong&gt;) in Output Window&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.google.com/igor.zc/R_KffeKsDXI/AAAAAAAAAT8/7NaWBW4nepg/output23.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="102" alt="output2" src="http://lh3.google.com/igor.zc/R_KfhOKsDYI/AAAAAAAAAUE/C1FRzWN8Peo/output2_thumb1.png" width="452" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;When all temporary names will be created, that exception IOException will be raised:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.google.com/igor.zc/R_KfjuKsDZI/AAAAAAAAAUM/rG0JUZPuNjg/exceptionQuickWatch12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="546" alt="exceptionQuickWatch" src="http://lh3.google.com/igor.zc/R_KfmOKsDaI/AAAAAAAAAUU/r1Ezo6FQWOg/exceptionQuickWatch_thumb8.png" width="539" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.path.gettemppath.aspx"&gt;Path.GetTempPath Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx"&gt;Path.GetTempFileName Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/04/how-to-receive-temporary-path-and-file.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-8587118535700688263</guid><pubDate>Sun, 30 Mar 2008 19:53:00 +0000</pubDate><atom:updated>2008-03-30T22:53:18.419+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">Debug</category><category domain="http://www.blogger.com/atom/ns#">File</category><title>Sample of StackTrace usage.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sometimes we want to store in log file error (warning or trace) message and stack trace, from where the message is stored. To solve the problem it is suggested to use class StackTrace.&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StackTraceSampleClass&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;const string &lt;/span&gt;LOG_FILE_NAME = &lt;span style="color: #a31515"&gt;&amp;quot;stackTraceSample.log&amp;quot;&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: blue"&gt;public void &lt;/span&gt;Execute()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.Delete(LOG_FILE_NAME);&lt;br /&gt;        F1(-10);&lt;br /&gt;        F2(-10);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;void &lt;/span&gt;F1(&lt;span style="color: blue"&gt;int &lt;/span&gt;arg)&lt;br /&gt;    {&lt;br /&gt;        F(arg);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;void &lt;/span&gt;F2(&lt;span style="color: blue"&gt;int &lt;/span&gt;arg)&lt;br /&gt;    {&lt;br /&gt;        F(arg);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;double &lt;/span&gt;F(&lt;span style="color: blue"&gt;int &lt;/span&gt;arg)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;if &lt;/span&gt;(arg &amp;lt; 0)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;StackTrace &lt;/span&gt;stackTrace = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StackTrace&lt;/span&gt;(&lt;span style="color: blue"&gt;true&lt;/span&gt;);&lt;br /&gt;            &lt;span style="color: blue"&gt;string &lt;/span&gt;logContent = &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;unexpected value of arg: {0}, stack: {1}&amp;quot;&lt;/span&gt;, arg, stackTrace);&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.AppendAllText(LOG_FILE_NAME, logContent);&lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;0;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Math&lt;/span&gt;.Sqrt(arg);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;font face="Verdana" size="3"&gt;File &lt;strong&gt;stackTraceSample.log&lt;/strong&gt; in Debug mode:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;a href="http://lh5.google.com/igor.zc/R-_vleKsDRI/AAAAAAAAATM/2nPHxkU3nx0/stackTraceInDebugMode%5B4%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="393" alt="stackTraceInDebugMode" src="http://lh3.google.com/igor.zc/R-_vn-KsDSI/AAAAAAAAATU/VeqvNVCAl5E/stackTraceInDebugMode_thumb%5B2%5D.png" width="533" border="0" /&gt;&lt;/a&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;File &lt;strong&gt;stackTraceSample.log&lt;/strong&gt; in Release mode:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;a href="http://lh6.google.com/igor.zc/R-_vpuKsDTI/AAAAAAAAATc/3IXa5rrzR-U/stackTraceInReleaseMode%5B4%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="181" alt="stackTraceInReleaseMode" src="http://lh3.google.com/igor.zc/R-_vq-KsDUI/AAAAAAAAATk/eMM_WMYq0aU/stackTraceInReleaseMode_thumb%5B2%5D.png" width="546" border="0" /&gt;&lt;/a&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx"&gt;StackTrace Class&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://csharp-tips.blogspot.com/2008/03/sample-of-c-tracefail-method.html"&gt;Sample of C# Trace.Fail() method.&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/03/sample-of-stacktrace-usage.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-5160445446790061016</guid><pubDate>Sun, 30 Mar 2008 19:26:00 +0000</pubDate><atom:updated>2008-03-30T22:26:16.589+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">Debug</category><title>Sample of C# Trace.Fail() method.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Often we don't check input parameters, because we have a contract and expect valid parameters values. But sometimes, we want to control critical parameters and somehow inform about invalid input parameters.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;In this case, we can use method Debug.Fail() or Trace.Fail().&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: blue"&gt;static int &lt;/span&gt;CheckArgument(&lt;span style="color: blue"&gt;string &lt;/span&gt;argument)     &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if &lt;/span&gt;(argument == &lt;span style="color: blue"&gt;null&lt;/span&gt;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.Fail(&lt;span style="color: #a31515"&gt;&amp;quot;CheckArgument(): argument cannot be bull&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;CheckArgument()&amp;quot;&lt;/span&gt;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return &lt;/span&gt;0;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return &lt;/span&gt;argument.Length;     &lt;br /&gt;}     &lt;br /&gt;&lt;font face="Verdana" size="3"&gt;Method &lt;strong&gt;CheckArgument&lt;/strong&gt; doesn't expect to receive &lt;strong&gt;null&lt;/strong&gt;, but if input parameter argument will be &lt;strong&gt;null&lt;/strong&gt;, we call method &lt;strong&gt;Trace.Fail()&lt;/strong&gt; with relevant message. By default, next message will be shown:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.google.com/igor.zc/R-_pL-KsDNI/AAAAAAAAASs/KtEljmYTr4Q/TraceFailErrorMessage4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="216" alt="TraceFailErrorMessage" src="http://lh4.google.com/igor.zc/R-_pQOKsDOI/AAAAAAAAAS0/0AJPhjULrGE/TraceFailErrorMessage_thumb2.png" width="479" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font size="+0"&gt;The message will be relevant in debug mode, but in production mode, we don't want to show message to user, but want to inform developer about the problem.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;So, we want to change behavior of Fail. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;First of all, let's implement new class MyTraceListener and override method Fail (actually 2 method Fails):&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyTraceListener &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;DefaultTraceListener&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;public override void &lt;/span&gt;Fail(&lt;span style="color: blue"&gt;string &lt;/span&gt;message)&lt;br /&gt;    {&lt;br /&gt;        SendNotification(message);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;public override void &lt;/span&gt;Fail(&lt;span style="color: blue"&gt;string &lt;/span&gt;message, &lt;span style="color: blue"&gt;string &lt;/span&gt;detailMessage)&lt;br /&gt;    {&lt;br /&gt;        SendNotification(message + &lt;span style="color: #a31515"&gt;&amp;quot;, detailMessage: &amp;quot; &lt;/span&gt;+ detailMessage);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;void &lt;/span&gt;SendNotification(&lt;span style="color: blue"&gt;string &lt;/span&gt;message)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: green"&gt;// here should be implemented sending email&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StackTrace &lt;/span&gt;stackTrace = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StackTrace&lt;/span&gt;(1, &lt;span style="color: blue"&gt;true&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;MyTraceListener notification: &amp;quot; &lt;/span&gt;+ message + &lt;span style="color: #a31515"&gt;&amp;quot; in &amp;quot; &lt;/span&gt;+ stackTrace);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;Now, we should define the implemented MyTraceListener as single TraceListenerClass:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;MyTraceListener &lt;/span&gt;listener = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyTraceListener&lt;/span&gt;();&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.Listeners.Clear();&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.Listeners.Add(listener);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="+0"&gt;&amp;quot;Output Visual Studio&amp;quot; Window demonstrates possible notification's output:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.google.com/igor.zc/R-_pSeKsDPI/AAAAAAAAAS8/uymY84edbgk/TraceFailErrorOutput6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="242" alt="TraceFailErrorOutput" src="http://lh5.google.com/igor.zc/R-_pVeKsDQI/AAAAAAAAATE/UJDvNP0wnIA/TraceFailErrorOutput_thumb4.png" width="581" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font size="+0"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.tracelistener.fail.aspx"&gt;TraceListener.Fail Method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx"&gt;StackTrace Class&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Sources can be found in &amp;quot;&lt;a href="http://code.google.com/p/csharp-tips/"&gt;Code project C# tips samples&lt;/a&gt;&amp;quot; in project &lt;strong&gt;Debug&lt;/strong&gt;, method &lt;strong&gt;sample_TraceFail()&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/03/sample-of-c-tracefail-method.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-676938117631280599</guid><pubDate>Wed, 26 Mar 2008 20:32:00 +0000</pubDate><atom:updated>2008-03-26T22:32:02.583+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">Array</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">convertation</category><category domain="http://www.blogger.com/atom/ns#">string</category><title>How to convert simple types (basic operations) in c#.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;To convert one simple type (for example int), to another simple type (for example float or string) it is suggested to use .NET class BitConverter.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;C# code sample:&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;static void &lt;/span&gt;Main()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;int &lt;/span&gt;intData = 0x01020304;&lt;br /&gt;    &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] bytesData = &lt;span style="color: #2b91af"&gt;BitConverter&lt;/span&gt;. GetBytes(intData);&lt;br /&gt;    &lt;span style="color: blue"&gt;float &lt;/span&gt;floatData = &lt;span style="color: #2b91af"&gt;BitConverter&lt;/span&gt;.ToSingle(bytesData, 0);&lt;br /&gt;    &lt;span style="color: blue"&gt;string &lt;/span&gt;stringData = &lt;span style="color: #2b91af"&gt;BitConverter&lt;/span&gt;.ToString(bytesData);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;Result values (from &lt;a href="http://msdn2.microsoft.com/en-us/library/aa979472(vs.71).aspx"&gt;VS Locals Window&lt;/a&gt;):&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.google.com/igor.zc/R-qyuOKsDLI/AAAAAAAAASc/yewlmGg3Iuc/BitConverterResultsInLocals%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="213" alt="BitConverterResultsInLocals" src="http://lh4.google.com/igor.zc/R-qyweKsDMI/AAAAAAAAASk/-oVG4wGRUPE/BitConverterResultsInLocals_thumb%5B1%5D.png" width="371" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.bitconverter.aspx"&gt;BitConverter Class&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </description><link>http://csharp-tips.blogspot.com/2008/03/how-to-convert-simple-types-basic.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9039594672466512821.post-8873618591291447509</guid><pubDate>Wed, 26 Mar 2008 06:04:00 +0000</pubDate><atom:updated>2008-03-26T08:04:34.423+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">Serialization</category><title>The simplest way to store object to .xml file in c#.</title><description>&lt;p&gt;&lt;font face="Verdana" size="3"&gt;The simplest way to implement xml serialization in c#:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;1. Add attribute [Serializable] for all classes.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;2. All public fields will be serialized.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="3"&gt;3. If you want to store field as xml attribute add attribute [XmlAttribute(&amp;quot;&amp;quot;)].&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]&lt;br /&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SubData&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    [&lt;span style="color: #2b91af"&gt;XmlAttribute&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    &lt;span style="color: blue"&gt;public int &lt;/span&gt;subDataAsAttribute;&lt;br /&gt;    &lt;span style="color: blue"&gt;public int &lt;/span&gt;subData;&lt;br /&gt;    &lt;span style="color: blue"&gt;public int &lt;/span&gt;SubProperty { &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;subDataAsAttribute + subData; } }&lt;br /&gt;}&lt;br /&gt;[&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]&lt;br /&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Data&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;public int &lt;/span&gt;publicIntData;&lt;br /&gt;    &lt;span style="color: blue"&gt;internal int &lt;/span&gt;internalIntData;&lt;br /&gt;    &lt;span style="color: blue"&gt;protected int &lt;/span&gt;protectedIntData;&lt;br /&gt;    &lt;span style="color: blue"&gt;private int &lt;/span&gt;privateIntData;&lt;br /&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SubData &lt;/span&gt;subData;&lt;br /&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;Data()&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;Data(&lt;span style="color: blue"&gt;int &lt;/span&gt;publicIntData)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.publicIntData = publicIntData;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana" size="3"&gt;4. Create objects XmlSerializer and TextWriter and store needed object to xml file:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;xmlFilePath = &lt;span style="color: #a31515"&gt;&amp;quot;data.xml&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;XmlSerializer &lt;/span&gt;serializer = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;));&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;TextWriter &lt;/span&gt;writer = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StreamWriter&lt;/span&gt;(xmlFilePath))&lt;br /&gt;{&lt;br /&gt;    serializer.Serialize(writer, data);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;5. To read the stored object use XmlSerializer and TextReader:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Data &lt;/span&gt;actualData;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;TextReader &lt;/span&gt;reader = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StreamReader&lt;/span&gt;(xmlFilePath))&lt;br /&gt;{&lt;br /&gt;    actualData = (&lt;span style="color: #2b91af"&gt;Data&lt;/span&gt;) serializer.Deserialize(reader);&lt;br /&gt;}&lt;br /&gt;&lt;font face="Verdana" size="3"&gt;6. See sample of relevant xml file:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;a href="http://lh6.google.com/igor.zc/R-nnbOKsDJI/AAAAAAAAASM/51hk7dEZLlM/xmlScreen%5B4%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="138" alt="xmlScreen" src="http://lh3.google.com/igor.zc/R-nnceKsDKI/AAAAAAAAASU/dztwWk7ZSlQ/xmlScreen_thumb%5B2%5D.png" width="620" border="0" /&gt;&lt;/a&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;Reference:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Verdana" size="3"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx"&gt;XmlSerializer Class&lt;/a&gt;&lt;/font&gt;&lt;/pre&gt;  </description><link>http://csharp-tips.blogspot.com/2008/03/simplest-way-to-store-object-to-xml.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item></channel></rss>