在.NET中使用WIN32 API

JerryXia 发表于 , 阅读 (1,170)
目前最全的PInvoke资源网站:www.pinvoke.net,里面包含了绝大部分已知Win32 API的 .NET封装。值得庆贺的是:里面一般都包含每个API的C#/VB.NET版本,还包含MSDN的引用连接。 阅读全文

Effective C# 原则39:使用.Net验证

JerryXia 发表于 , 阅读 (2,630)
用户的输入可能是多种多样的:你必须在交互式的控件中尽可能的验证输入。写一些用户输入验证可能很做作,而且也有出错的可能,但还是很有必要的。不能太相信用户的输入,用户可能会输入任何内容导致异常发生,进而进行SQL注入式攻击。我们不希望任何类似这样的事情发生。你应该了解足够的信息来怀疑用户的输入。很好,每个人都应该这样做,这也就是为什么.Net框架已经扩展了这样的功能,你可以使用这些功能从而使自己的代码编写工作减到最小,因为我们要对用户输入的每一块数据都要进行验证。.Net框架提供了不同的机制来... 阅读全文

Effective C# 原则38:使用和支持数据绑定

JerryXia 发表于 , 阅读 (2,412)
有经验的Windows程序员一定对写代码从一个控件上取值,以及把值存储到控件上很熟悉:public Form1 : Form { private MyType myDataValue; private TextBox textBoxName; private void InitializeComponent( ) { textBoxName.Text = myDataValue.Name; this.textBoxName.Leave += new ... 阅读全文

MicroSoft C#代码规范(Record)

JerryXia 发表于 , 阅读 (3,197)
一定请 将代表了读/写集合的属性或返回值声明为Collection或其子类,将代表了只读集合的属性或返回值声明为ReadOnlyCollection或其子类。您应该重新考虑对于 ArrayList 的使用,因为所有添加至其中的对象都被当做System.Object ,当从ArrayList取回值时,这些对象都会拆箱,并返回其真实的值类型。所以我们推荐您使用定制类型的集合,而不是ArrayList。比如,.NET在System.Collection.Specialized命名空间内为Stri... 阅读全文

字符编码

JerryXia 发表于 , 阅读 (1,707)
我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。由于计算机是美国人发明的,因此,最早只有127个字... 阅读全文

Effective C# 原则37:使用标准的配置机制

JerryXia 发表于 , 阅读 (1,837)
我们要寻求一种避免直接写代码的应用程序配置和信息设置方法,我们已经创建了多种不同的策略来存储配置信息。而我们是要寻求一种正确的方法,我们要不断提高和改我们的想法,关于哪里是放置这些信息的好地方。INI文件?这是Windows3.1做的事,配置信息的结构是受限制的,而且在文件名上可能还会与其它程序程序相冲突。注册表?是的,是这个正确的想法,但它也有它的限制。乱七八糟的程序可能会通过在注册表里写一些错误信息来严重破坏计算机。正因为写注册表存在危险,一个应用程序必须有管理员权限来写注册表的一部份... 阅读全文

Effective C# 原则36:利用.Net运行时诊断

JerryXia 发表于 , 阅读 (1,772)
当有问题发生时,它们往往并不是在实验的时候发生的,机器有轻松调试的工具。在很多实际情况中,你不好修正的问题总是发生在用户的机器上,那里没有调试环境,也没有好的方法计算出问题的情况。在实际情况中,有经验的开发人员会创建一个方法,让系统在运行时捕获尽可能多的信息。.Net框架已经包含一些类集合,利用这些集合,你可以做一些通用的调试。而且这些类可以在运行时或者编译时进行配置。如果你利用它们,你就可以轻松的发现在实际运行时的问题。使用框架里已经存在的代码,你可以发送一条诊断信息到一个文件,或者到调... 阅读全文