- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 Use Conditional Attributes instead of #if - Effective C#学习笔记(4)
使用#if DEBUG / #endif这种预定义符,或许是老C++程序员的习惯了。我们仍然认为,这种预编译指令比较死板,不够灵活, 取代的方法是用运行时的C#特性(Attributes)。C#的特性Conditional是在System.Diagnostics名称空间下的,此特性仅支持方法和属性,不支持类。[Conditional("DEBUG")]public void Method()
2008-03-27 10:18:00 970
原创 C# .NET Remoting 简单应用示例
这个是Remoting中的HelloWorld using System;namespace zhl...{ public class Person:MarshalByRefObject ...{ private string m_name; public string Name ...{ get
2008-03-24 20:17:00 1228
原创 C#中跨线程调用
从.NET2.0开始,C#中加强了线程安全性,不允许直接的跨线程调用,而是以委托的Invoke方法来进行delegate void InterThreadInvokeHandler();void InvokedMethod() { if(!this.InvokeRequired) { //Do Something } else { InterThrea
2008-03-19 15:31:00 1104
原创 Prefer the is or as Operators to Casts - Effective C#学习笔记(3)
这里的Casts精确来说应该是DownCasts ,因为向上转型是不用强制类型转换的。如果我们要把一个object型的变量转换为自己的类型(类类型)MyType,用DownCast的做法是object o = Factory.GetObject();MyType mt = (MyType) o;以上的代码是有漏洞的,完美的防御性的代码应该这么写:object o = Factory.GetOb
2008-03-16 14:56:00 818
原创 Prefer readonly to const - Effective C#学习笔记(2)
尽量使用readonly的原因是它比const更加灵活。这里作者给我们的建议不再是Always,而是Prefer。这是因为readonlyt的性能是比const稍低的。作者的原话是slight slowly。这是因为readonly声明的是 run-time常量,而const定义的则是complile-time常量。readonly更灵活表现在:1,不必总是static的。因为const是
2008-03-15 21:55:00 695
原创 Always use Properties instead of Accessible Data Members - Effective C#学习笔记(1)
在Java的类库中,很普遍的可以看到公有的数据成员,但在Dot Net类库中,则很难看到。这很大程度上得益于C#的独创语法Property。很多人认为公有数据成员的效率要貌似比使用Property高,但是实际上是,编译器会很聪明地帮我们优化代码,所以在同等情况下,效率是不差的。如果没有特殊需求的话,软件更要关注的是代码的可维护性,可读行,扩展性。Property的灵活性是Data Member
2008-03-15 21:29:00 726
原创 讨厌的匈牙利表示法
习惯了C#和Java中的命名方法,现在要用匈牙利表示法,觉得很别扭。匈牙利表示法以变量类型的缩写为前缀,后面是头字母大写的变量描述。 不知道老程序员们为什么如此热衷于此道,这简直是火星语。匈牙利记号表示法前缀 前 缀
2008-03-14 14:09:00 1028
原创 _declspec 缩写的英文含义
今天在看C++中的Dll调用时(Dll中被调用函数前要加“_declspec(dllexport)” 主程序调用外部的函数前需加声明 “_declspec(dllimport)”),搞不明白 这个declspec到底是什么的缩写到网上查了下,也没有查到。我疑似是declaration spec (声明说明)的缩写,如果不对,还请大虾们指正谢谢
2008-03-13 20:01:00 4697 4
原创 连接操作 - Oracle 学习笔记 3
以前在学数据库时 就没搞明白什么是外连接,今天才弄明白~ o(∩_∩)o 我是不是很笨~...select * from table1,table2这里from子句的两个表执行的是笛卡尔积操作。也就是table2中的所有记录从头到尾吧table1中的所有记录映射一遍。得到的记录数是两个表记录数的乘积。select *from table1 a, table2 bwhere a.id
2008-03-03 20:00:00 697
原创 Oracle 基本数据类型 - Oracle 学习笔记 2
number: 默认38位数字,其中小数点后八位number(m,n): m位数字,其中小数点后n位char(m): m位的定长字符串,如果不足则用空格补满varchar2(m): 不定长字符串,最多可以有m位,不补空格。其中m值最大为4000long:相当于MSSQL里的text,类似于varchar2,但是最多能存2GB的数据。 long型不能用于子查询,函数,表达
2008-03-03 19:35:00 715
原创 Oracle SQL Plus 的基本操作 - Oracle 学习笔记 1
虽然有PL SQL这样强大的工具,但是作为初学者,我先搞清楚SQL Plus比较好有一些很实用的命令:查看系统参数列表: show all统计执行时间: set timing on (这个分析性能很有用)注释:/* something */ 或 -- something编辑Sql语句缓冲区(afiedt.buf):edit (调用默认文本编辑器 可以编辑前一次执行的语句)执行缓冲区里
2008-03-01 19:22:00 836
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人