最近看到这篇文章dotNetDR_的回复,让我想起一个真实发生的案例,下面就简单说说这个关于lock引用类型的一个不容易发现的隐藏缺陷。某类库中的代码,封装了很简单的一个通用类,用于线程安全地执行某一种类型的特定方法,几行代码搞定:
public class ConcurrentObjectE...
分类:
其他好文 时间:
2014-05-26 14:01:09
阅读次数:
221
最近在阅读Framework Design
Guidelines,本着现学现用的原则,于是就用FxCop工具对代码进行规范性检查时,发现了很多问题,其中包括命名以及一些设计上的规范。其中,Do not
expose generic lists 这条设计规范引起了我的注意。该规范指出“不要在对象模型中...
分类:
其他好文 时间:
2014-05-26 12:32:20
阅读次数:
294
模板与泛型编程--重载与函数模板引言: 函数模板可以重载:可以定义有相同名字但参数数目或类型不同的多个函数模板,也可以定义与函数模板有相同名字的普通非模板函数。 但是,声明一组重载函数模板不保证可以成功调用它们,重载的函数模板可能会导致二义性。一、函数匹配与函数模板如果重载函数中既有普通函数又有函数模板,确定函数调用的步骤如下:1.为这个函数名建立候选函数集合,包括: a.与被调用函数名字相同的任...
分类:
编程语言 时间:
2014-05-26 04:34:12
阅读次数:
317
[csharp]view
plaincopy1、要使用Dictionary集合,需要导入C#泛型命名空间
System.Collections.Generic(程序集:mscorlib)2、描述
1)、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成 ...
分类:
其他好文 时间:
2014-05-24 11:53:21
阅读次数:
297
模板与泛型编程--一个泛型句柄类引言:【小心地雷】 这个例子体现了C++相当复杂的语言应用,理解它需要很好地理解继承和模板。在熟悉了这些特性之后再研究这个例子也许会帮助。另一方面,这个例子还能很好地测试你对这些特性的理解程度。 前面示例的Sales_item和Query两个类的使用计数的实现是相同的。这类问题非常适合于泛型编程:可以定义类模板管理指针和进行使用计数。原本不相关的Sales_item...
分类:
编程语言 时间:
2014-05-22 22:46:57
阅读次数:
479
C++虚函数表解析陈皓http://blog.csdn.net/haoel前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了...
分类:
编程语言 时间:
2014-05-21 23:56:48
阅读次数:
507
条款01:视C++为一个语言联绑
C++的四个语言层次:
C:C++是以C为基础的。基本数据类型、语句、预处理器、数组、指针等统统来自C。Oject-Oriented C++:面向对象这一特性包含了:类,封装,继承,多态,虚函数等Template C++:C++的泛型编程能力。STL:一个标准的template库,里面介绍了容器、迭代器、算法以及函数对象等模板类和模板函数。
综述...
分类:
编程语言 时间:
2014-05-21 16:35:40
阅读次数:
265
在以前的Java版本中,开发者只能将注解(Annotation)写在声明中。对于Java 8,注解可以写在使用类型的任何地方,例如声明、泛型和强制类型转换等语句:
@Encrypted String data;List strings;myGraph = (@Immutable Graph) tmpGraph;
乍一看,类型注解并不是Java新版本最炫的特性。事实上,注解只是语法!工具...
分类:
编程语言 时间:
2014-05-21 15:33:25
阅读次数:
332
模板与泛型编程--类模板成员[续2]六、完整的Queue类Queue的完整定义:template class Queue;
template
ostream &operator &);
template class QueueItem
{
friend class Queue;
friend ostream &
operator(ostream &,const Q...
分类:
编程语言 时间:
2014-05-21 14:07:20
阅读次数:
304
模板与泛型编程--类模板成员[续1]二、非类型形参的模板实参template
class Screen
{
public:
Screen():screen(hi * wid,'#'),
cursor(hi * wid),height(hi),width(wid) {}
//..
private:
std::string screen;
std:...
分类:
编程语言 时间:
2014-05-21 14:00:04
阅读次数:
332