Monday, February 2, 2009

C#中自定义对象的复制粘贴

如何在剪贴板中保存我们自定义的对象呢?
利用对象的序列化和反序列化就可以啦

public void CopyToClipboard(MyObj obj)
{
StringBuilder str = new StringBuilder(obj.Serialize());
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, xmldoc);
Clipboard.SetData(DataFormats.Serializable, stream);
}

public void PasteFromClipboard()
{
MemoryStream stream = Clipboard.GetData(DataFormats.Serializable) as MemoryStream;
BinaryFormatter formatter = new BinaryFormatter();
MyObj obj = new MyObj();
obj. Deserialize(((StringBuilder)formatter.Deserialize(stream)).ToString());
}

Monday, November 17, 2008

C#的基本概念

1.静态变量和非静态变量的区别?

2.const 和 static readonly 区别?

3.extern 是什么意思?

4.abstract 是什么意思?

5.internal 修饰符起什么作用?

6.sealed 修饰符是干什么的?

7.override 和 overload 的区别?

8.什么是索引指示器?

9.new 修饰符是起什么作用?

10.this 关键字的含义?

11.可以使用抽象函数重写基类中的虚函数吗?

12.密封类可以有虚函数吗?

13.如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有get和set两个呢?

14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?

15.接口可以包含哪些成员?

16.类和结构的区别?

17.接口的多继承会带来哪些问题?

18.抽象类和接口的区别?

19.别名指示符是什么?

20.如何释放非托管资源?

21.P/Invoke是什么?

22.StringBuilder 和 String 的区别?

23.explicit 和 implicit 的含义?

24.params 有什么用?

25.什么是反射

Wednesday, September 3, 2008

Google Chrome

Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.

http://www.google.com/chrome/

Thursday, July 10, 2008

C#中隐藏类属性

当对象设置为PropertyGrid.SelectObject的对象时,可使用下面的方法隐藏部分属性:

void SetPropertyVisible(object obj, string propertyName, bool visibles){
Type type = typeof(System.ComponentModel.BrowsableAttribute);
    PropertyDescriptor propDesc = TypeDescriptor.GetProperties(obj)[propertyName];
Attribute attr = propDesc.Attributes[type];
FieldInfo fieldInfo = type.GetField("browsable", BindingFlags.Instance BindingFlags.NonPublic);
fieldInfo.SetValue(attr, visible);
}

需要注意的是,定义类属性时,要将所有的属性都标记Browsable属性。
[Browsable(true)]
[ReadOnly(false)]
public string String1{
get { return this.string1; }
set { this.string1 = value; }
}

同样的也可以通过上面的方法设置属性是否只读,只需更改2行代码:
Type type = typeof(System.ComponentModel.ReadOnlyAttribute);
FieldInfo fieldInfo = type.GetField("isReadOnly", BindingFlags.Instance BindingFlags.NonPublic);

Wednesday, July 9, 2008

Protocol Buffers: Google's Data Interchange Format

Google本周一发布了该公司内部使用的开放源代码数据描述语言Protocol Buffers.Protocol Buffers与XML相似,但更简单、更小、更快.
谷歌的文档称,与具有可比性的XML文件相比,Protocol Buffers文件的尺寸要小3-10倍,解析速度要快20-100倍.
希望能果真如此,感谢Google所做的贡献。