<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mingbo &#187; 基础</title>
	<atom:link href="http://shao.mingbo.de/tag/%e5%9f%ba%e7%a1%80/feed/" rel="self" type="application/rss+xml" />
	<link>http://shao.mingbo.de</link>
	<description>包括教育技术，编程，互联网等方面的文章及随想。</description>
	<lastBuildDate>Thu, 26 Aug 2010 02:57:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>cSharp编程基础的学习笔记</title>
		<link>http://shao.mingbo.de/2009/11/25/basical-knowledge-of-csharp/</link>
		<comments>http://shao.mingbo.de/2009/11/25/basical-knowledge-of-csharp/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 17:00:37 +0000</pubDate>
		<dc:creator>邵 明博</dc:creator>
				<category><![CDATA[.NET 编程]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[myNote]]></category>
		<category><![CDATA[基础]]></category>
		<category><![CDATA[查缺补漏]]></category>

		<guid isPermaLink="false">http://shao.mingbo.de/?p=235</guid>
		<description><![CDATA[在上次写完了《垃圾回收机制的剖析》之后，就感觉这种做笔记的方法挺有意思的。于是打算把这作为一种习惯，坚持下来。下面记录的是今天看书的一点点收获。 编译运行： Main方法要么没有返回值Void，要么返回一个整数（int）。 修饰符static表示不能在类的实例上执行，因此不必先实例化类再调用（使用类本身的名称）。要访问一个实例字段，就需要使用this关键字。 变量-&#62;变量的初始化： 变量为类或结构的字段，如未初始化，创建这些变量时，其值就默认是0 方法的局部变量必须在代码中显式初始化，否则编译通不过。 常量-&#62;常量的特征： 常量总是静态的，不必也不允许在声明时包含修饰符static。 不能从一个变量提取值来初始化常量。如需相同的效果，可以使用只读变量。 预定义数据类型： c#中把数据类型分为2种，一种是值类型，另一种是引用类型。值类型储存在堆栈中，而引用类型储存在托管堆中。引用类型与值类型的区别参考以下代码： //引用类型给出的demo int[] x, y; x=new int[10]; x[0] = 10; y = x; y[0] = 20; Console.WriteLine(x[0]); //值类型给出的demo bool a, b; a = true; b = a; b = false; Console.WriteLine(a); 这个例子的输出结果是20和True.它说明，这2个引用变量虽然进行了赋值，但托管堆中只保留了一个引用，都指向了同一块区域。而值类型则不同，当一个布尔类型变量a赋值为true之后，再将a的值赋值给b,堆栈中就会有2个布尔值。 c#认可的基本预定义类型没有内置于c#语言中，而是内置于.net Framework中。当声明一个int类型的数据时，实际上是声明了一个System.Int32的一个实例。目前看来这样的做法，有这样的好处： 为多语言的交互铺路，形成了一个Common Type System。 使得基本的数据类型可以看做是支持某些方法的类，其声明出来的数据是支持这些方法的实例。如: int i = 10; string str [...]]]></description>
			<content:encoded><![CDATA[<p>在上次写完了《<a href="http://shao.mingbo.de/2009/11/23/dot-net-garbage-collector-analysis/">垃圾回收机制的剖析</a>》之后，就感觉这种做笔记的方法挺有意思的。于是打算把这作为一种习惯，坚持下来。下面记录的是今天看书的一点点收获。<br />
编译运行：</p>
<ul>
<li>Main方法要么没有返回值Void，要么返回一个整数（int）。</li>
<li>修饰符static表示不能在类的实例上执行，因此不必先实例化类再调用（使用类本身的名称）。要访问一个实例字段，就需要使用this关键字。</li>
</ul>
<p>变量-&gt;变量的初始化：</p>
<ul>
<li>变量为类或结构的字段，如未初始化，创建这些变量时，其值就默认是0</li>
<li>方法的局部变量必须在代码中显式初始化，否则编译通不过。</li>
</ul>
<p>常量-&gt;常量的特征：</p>
<ul>
<li>常量总是静态的，不必也不允许在声明时包含修饰符static。</li>
<li>不能从一个变量提取值来初始化常量。如需相同的效果，可以使用<strong>只读变量</strong>。</li>
</ul>
<p>预定义数据类型：</p>
<p>c#中把数据类型分为2种，一种是值类型，另一种是引用类型。值类型储存在堆栈中，而引用类型储存在托管堆中。引用类型与值类型的区别参考以下代码：</p>
<pre lang="csharp">            //引用类型给出的demo
            int[] x, y;
            x=new int[10];
            x[0] = 10;
            y = x;
            y[0] = 20;
            Console.WriteLine(x[0]);
            //值类型给出的demo
            bool a, b;
            a = true;
            b = a;
            b = false;
            Console.WriteLine(a);</pre>
<p>这个例子的输出结果是20和True.它说明，这2个引用变量虽然进行了赋值，但<strong>托管堆中只保留了一个引用</strong>，都指向了同一块区域。而值类型则不同，当一个布尔类型变量a赋值为true之后，再将a的值赋值给b,<strong>堆栈中就会有2个布尔值</strong>。</p>
<p>c#认可的基本预定义类型没有内置于c#语言中，而是内置于.net Framework中。当声明一个int类型的数据时，实际上是声明了一个System.Int32的一个实例。目前看来这样的做法，有这样的好处：</p>
<ul>
<li>为多语言的交互铺路，形成了一个Common Type System。</li>
<li>使得基本的数据类型可以看做是支持某些方法的类，其声明出来的数据是支持这些方法的实例。如:</li>
</ul>
<pre lang="csharp">            int i = 10;
            string str = i.ToString();
            Console.WriteLine(str);</pre>
<p>c#有15个预定义类型，13个是值类型，2个引用类型：string,object：</p>
<ul>
<li>所有的整数类型的变量都可以赋予十进制或十六进制的值。</li>
<li>对一个整数是int,uint,long或ulong没有显示的声明，都默认为int。（显示的声明可以在数字后面加上L或UL）</li>
<li>代码中没有对某个非整数类型硬编码，则默认为一个double类型。</li>
<li>decimal不是基本类型，所以在计算时使用会有性能的损失。</li>
<li>char包含16位。一部分原因是不允许char和byte进行隐式的转换；另外，尽管8位足够编码英语中的每个字符和数字0~9，<strong>但不能够编码更大的符号系统中的每个字符</strong>（如：中文）。为了面向全世界，计算机行业正从8位字符集向16位的Unicode模式转变。</li>
</ul>
<pre lang="csharp">            string a = "a string";
            string b = a;
            Console.WriteLine("a is "+a);
            Console.WriteLine("b is "+b);
            a = "another string";
            Console.WriteLine("a is "+a);
            Console.WriteLine("b is "+b);</pre>
<p><a href="http://shao.mingbo.de/wp-content/uploads/2009/11/类型.jpeg"><img class="alignleft size-thumbnail wp-image-246" title="类型" src="http://shao.mingbo.de/wp-content/uploads/2009/11/类型-150x150.jpg" alt="类型 150x150 cSharp编程基础的学习笔记" width="150" height="150" /></a>这是我总结的c#预定义类型的mindmap，大致囊括了各个类型的基本信息。其中string类型稍微有点特殊，这里单独抽出来谈谈，尤其注意到string是预定义类型中为数不多的引用类型，代码如上。挺有意思的是，按照之前引用类型与数值类型比较的例子得出的结论，最后一条应该输出“b is another string”。可事实并不是我们想象的那样。虽然string对象保留在堆上，但string的一些常用操作会与其他引用类型有所区别：<strong>修改一个字符串，就会创建一个全新的string对象</strong>。修改a的值，不是替换了原先的，而是在堆上重新分配了一个新的对象。——这是运算符重载造成的。</p>
<p>流控制：<br />
foreach循环不能修改集合中各项数据的值。虽然这个规则并不是知识体系中的漏洞，但作为之前接触不多的循环结构，还是要总结出来提醒自己。</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2009年12月22日 -- <a href="http://shao.mingbo.de/2009/12/22/how-to-use-backgroundworker-in-csharp/" title="cSharp中BackgroundWorker的用法">cSharp中BackgroundWorker的用法</a></li><li>2009年12月21日 -- <a href="http://shao.mingbo.de/2009/12/21/synchronize-class-design-in-csharp/" title="cSharp中同步类的设计">cSharp中同步类的设计</a></li><li>2009年12月20日 -- <a href="http://shao.mingbo.de/2009/12/20/paralize-thread-in-charp/" title="cSharp中给线程传递参数">cSharp中给线程传递参数</a></li><li>2009年12月19日 -- <a href="http://shao.mingbo.de/2009/12/19/asynchronous-delegate-in-csharp/" title="cSharp中异步委托的笔记">cSharp中异步委托的笔记</a></li><li>2009年12月16日 -- <a href="http://shao.mingbo.de/2009/12/16/dynamic-loading-assemblies-and-reflection-in-csharp/" title="cSharp动态调用和反射的一个绝佳例子">cSharp动态调用和反射的一个绝佳例子</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://shao.mingbo.de/2009/11/25/basical-knowledge-of-csharp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
