<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-828236289491907080</id><updated>2011-04-22T12:05:46.662+08:00</updated><category term='C#'/><category term='Custom Control'/><category term='Clipboard'/><category term='Protocol Buffers'/><category term='Google'/><title type='text'>Development Notes</title><subtitle type='html'>Terence's blog of development notes</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zterencedev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://zterencedev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Terence</name><uri>http://www.blogger.com/profile/00041499319176698190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nZw11MN20JY/SLyvNTTdG7I/AAAAAAAABOU/rGlM_huYjqk/S220/0769438.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-828236289491907080.post-4848134642437743834</id><published>2009-02-02T10:44:00.002+08:00</published><updated>2009-02-02T10:56:53.299+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Clipboard'/><title type='text'>C#中自定义对象的复制粘贴</title><content type='html'>如何在剪贴板中保存我们自定义的对象呢？&lt;br /&gt;利用对象的序列化和反序列化就可以啦&lt;br /&gt;&lt;br /&gt;public void CopyToClipboard(MyObj obj)&lt;br /&gt;{&lt;br /&gt;    StringBuilder str = new StringBuilder(obj.Serialize());&lt;br /&gt;    MemoryStream stream = new MemoryStream();&lt;br /&gt;    BinaryFormatter formatter = new BinaryFormatter();&lt;br /&gt;    formatter.Serialize(stream, xmldoc);&lt;br /&gt;    Clipboard.SetData(DataFormats.Serializable, stream);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void PasteFromClipboard()&lt;br /&gt;{&lt;br /&gt;    MemoryStream stream = Clipboard.GetData(DataFormats.Serializable) as MemoryStream;&lt;br /&gt;    BinaryFormatter formatter = new BinaryFormatter();&lt;br /&gt;    MyObj obj = new MyObj();&lt;br /&gt;    obj. Deserialize(((StringBuilder)formatter.Deserialize(stream)).ToString());&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/828236289491907080-4848134642437743834?l=zterencedev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zterencedev.blogspot.com/feeds/4848134642437743834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=828236289491907080&amp;postID=4848134642437743834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/4848134642437743834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/4848134642437743834'/><link rel='alternate' type='text/html' href='http://zterencedev.blogspot.com/2009/02/c.html' title='C#中自定义对象的复制粘贴'/><author><name>Terence</name><uri>http://www.blogger.com/profile/00041499319176698190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nZw11MN20JY/SLyvNTTdG7I/AAAAAAAABOU/rGlM_huYjqk/S220/0769438.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-828236289491907080.post-5807396486642567386</id><published>2008-11-17T15:41:00.001+08:00</published><updated>2008-11-17T15:43:25.885+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C#的基本概念</title><content type='html'>1.静态变量和非静态变量的区别？     &lt;br /&gt;&lt;br /&gt;2.const 和 static readonly 区别？     &lt;br /&gt;&lt;br /&gt;3.extern 是什么意思？&lt;br /&gt;&lt;br /&gt;4.abstract 是什么意思？     &lt;br /&gt;&lt;br /&gt;5.internal 修饰符起什么作用？     &lt;br /&gt;&lt;br /&gt;6.sealed 修饰符是干什么的？     &lt;br /&gt;&lt;br /&gt;7.override 和 overload 的区别？     &lt;br /&gt;&lt;br /&gt;8.什么是索引指示器？     &lt;br /&gt;&lt;br /&gt;9.new 修饰符是起什么作用？     &lt;br /&gt;&lt;br /&gt;10.this 关键字的含义？     &lt;br /&gt;&lt;br /&gt;11.可以使用抽象函数重写基类中的虚函数吗？     &lt;br /&gt;&lt;br /&gt;12.密封类可以有虚函数吗？     &lt;br /&gt;&lt;br /&gt;13.如果基类中的虚属性只有一个属性访问器，那么继承类重写该属性后可以有几个属性访问器？如果基类中有get和set两个呢？     &lt;br /&gt;&lt;br /&gt;14.abstract 可以和 virtual 一起使用吗？可以和 override 一起使用吗？     &lt;br /&gt;&lt;br /&gt;15.接口可以包含哪些成员？     &lt;br /&gt;&lt;br /&gt;16.类和结构的区别？&lt;br /&gt;&lt;br /&gt;17.接口的多继承会带来哪些问题？&lt;br /&gt;&lt;br /&gt;18.抽象类和接口的区别？     &lt;br /&gt;&lt;br /&gt;19.别名指示符是什么？     &lt;br /&gt;&lt;br /&gt;20.如何释放非托管资源？     &lt;br /&gt;&lt;br /&gt;21.P/Invoke是什么？     &lt;br /&gt;&lt;br /&gt;22.StringBuilder 和 String 的区别？     &lt;br /&gt;&lt;br /&gt;23.explicit 和 implicit 的含义？     &lt;br /&gt;&lt;br /&gt;24.params 有什么用？     &lt;br /&gt;&lt;br /&gt;25.什么是反射&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/828236289491907080-5807396486642567386?l=zterencedev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zterencedev.blogspot.com/feeds/5807396486642567386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=828236289491907080&amp;postID=5807396486642567386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/5807396486642567386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/5807396486642567386'/><link rel='alternate' type='text/html' href='http://zterencedev.blogspot.com/2008/11/c.html' title='C#的基本概念'/><author><name>Terence</name><uri>http://www.blogger.com/profile/00041499319176698190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nZw11MN20JY/SLyvNTTdG7I/AAAAAAAABOU/rGlM_huYjqk/S220/0769438.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-828236289491907080.post-1010912891271280637</id><published>2008-09-03T11:12:00.002+08:00</published><updated>2008-09-03T11:40:51.803+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Chrome</title><content type='html'>Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.&lt;br /&gt;&lt;br /&gt;http://www.google.com/chrome/&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nZw11MN20JY/SL4HKKmpIoI/AAAAAAAABPY/rUrIo_Qt6eI/s1600-h/2008-09-03_113729.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_nZw11MN20JY/SL4HKKmpIoI/AAAAAAAABPY/rUrIo_Qt6eI/s400/2008-09-03_113729.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5241634887532356226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/828236289491907080-1010912891271280637?l=zterencedev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zterencedev.blogspot.com/feeds/1010912891271280637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=828236289491907080&amp;postID=1010912891271280637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/1010912891271280637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/1010912891271280637'/><link rel='alternate' type='text/html' href='http://zterencedev.blogspot.com/2008/09/google-chrome.html' title='Google Chrome'/><author><name>Terence</name><uri>http://www.blogger.com/profile/00041499319176698190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nZw11MN20JY/SLyvNTTdG7I/AAAAAAAABOU/rGlM_huYjqk/S220/0769438.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_nZw11MN20JY/SL4HKKmpIoI/AAAAAAAABPY/rUrIo_Qt6eI/s72-c/2008-09-03_113729.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-828236289491907080.post-1413080400677386920</id><published>2008-07-10T23:03:00.003+08:00</published><updated>2008-07-11T16:35:30.671+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C#中隐藏类属性</title><content type='html'>&lt;pre&gt;&lt;span style="font-family:arial;color:#000000;"&gt;当对象设置为PropertyGrid.SelectObject的对象时，可使用下面的方法隐藏部分属性：&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;void&lt;/span&gt; SetPropertyVisible(&lt;span style="color:#3333ff;"&gt;object&lt;/span&gt; obj, &lt;span style="color:#3333ff;"&gt;string&lt;/span&gt; propertyName, &lt;span style="color:#3333ff;"&gt;bool&lt;/span&gt; visibles){&lt;br /&gt;    &lt;span style="color:#339999;"&gt;Type&lt;/span&gt; type = &lt;span style="color:#3333ff;"&gt;typeof&lt;/span&gt;(System.ComponentModel.&lt;span style="color:#339999;"&gt;BrowsableAttribute&lt;/span&gt;);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:Arial;"&gt;    &lt;span style="color:#339999;"&gt;PropertyDescriptor&lt;/span&gt; propDesc = &lt;span style="color:#339999;"&gt;TypeDescriptor&lt;/span&gt;.GetProperties(obj)[propertyName];&lt;br /&gt;    &lt;span style="color:#339999;"&gt;Attribute&lt;/span&gt; attr = propDesc.Attributes[type];&lt;br /&gt;    &lt;span style="color:#339999;"&gt;FieldInfo&lt;/span&gt; fieldInfo = type.GetField&lt;span style="color:#660000;"&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;"browsable"&lt;/span&gt;, &lt;span style="color:#339999;"&gt;BindingFlags&lt;/span&gt;.Instance &lt;span style="color:#339999;"&gt;BindingFlags&lt;/span&gt;.NonPublic);&lt;br /&gt;    fieldInfo.SetValue(attr, visible);&lt;br /&gt;} &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;需要注意的是，定义类属性时，要将所有的属性都标记&lt;span style="color:#339999;"&gt;Browsable&lt;/span&gt;属性。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;[&lt;span style="color:#339999;"&gt;Browsable&lt;/span&gt;(true)]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;[&lt;span style="color:#339999;"&gt;ReadOnly&lt;/span&gt;(false)]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;public string&lt;/span&gt; String1{&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;return&lt;/span&gt; this.string1; }&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;set&lt;/span&gt; { this.string1 = &lt;span style="color:#3333ff;"&gt;value&lt;/span&gt;; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;同样的也可以通过上面的方法设置属性是否只读，只需更改2行代码：&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#339999;"&gt;Type&lt;/span&gt; type = &lt;span style="color:#3333ff;"&gt;typeof&lt;/span&gt;(System.ComponentModel.&lt;span style="color:#339999;"&gt;ReadOnlyAttribute&lt;/span&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#339999;"&gt;FieldInfo&lt;/span&gt; fieldInfo = type.GetField("isReadOnly", &lt;span style="color:#339999;"&gt;BindingFlags&lt;/span&gt;.Instance &lt;span style="color:#339999;"&gt;BindingFlags&lt;/span&gt;.NonPublic);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/828236289491907080-1413080400677386920?l=zterencedev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zterencedev.blogspot.com/feeds/1413080400677386920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=828236289491907080&amp;postID=1413080400677386920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/1413080400677386920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/1413080400677386920'/><link rel='alternate' type='text/html' href='http://zterencedev.blogspot.com/2008/07/c.html' title='C#中隐藏类属性'/><author><name>Terence</name><uri>http://www.blogger.com/profile/00041499319176698190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nZw11MN20JY/SLyvNTTdG7I/AAAAAAAABOU/rGlM_huYjqk/S220/0769438.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-828236289491907080.post-7230627209865926097</id><published>2008-07-09T00:02:00.002+08:00</published><updated>2008-07-09T00:22:12.388+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Protocol Buffers'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Protocol Buffers: Google's Data Interchange Format</title><content type='html'>Google本周一发布了该公司内部使用的开放源代码数据描述语言Protocol Buffers.Protocol Buffers与XML相似,但更简单、更小、更快.&lt;br /&gt;谷歌的文档称,与具有可比性的XML文件相比,Protocol Buffers文件的尺寸要小3-10倍,解析速度要快20-100倍.&lt;br /&gt;希望能果真如此，感谢Google所做的贡献。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/828236289491907080-7230627209865926097?l=zterencedev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zterencedev.blogspot.com/feeds/7230627209865926097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=828236289491907080&amp;postID=7230627209865926097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/7230627209865926097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/828236289491907080/posts/default/7230627209865926097'/><link rel='alternate' type='text/html' href='http://zterencedev.blogspot.com/2008/07/protocol-buffers-googles-data.html' title='Protocol Buffers: Google&apos;s Data Interchange Format'/><author><name>Terence</name><uri>http://www.blogger.com/profile/00041499319176698190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nZw11MN20JY/SLyvNTTdG7I/AAAAAAAABOU/rGlM_huYjqk/S220/0769438.jpg'/></author><thr:total>0</thr:total></entry></feed>
