C#2.0中用范型实现单例模式

 
#region Using directives

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

#endregion

namespace GenericsSingleton
{
    /// <summary>
    /// 单例范型
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class Singleton<T>
    {
        private static T _instance;

        public Singleton()
        {
        }

        public static T Instance
        {
            get
            {
                if (_instance == null)
                {  

                   //获得实例,使用这个方法的前提是T要有公有的、无参数的构造函数               

                   _instance = (T)System.Activator.CreateInstance(typeof(T));
                }
                return _instance;
            }
        }
    }

    /// <summary>
    /// 要实现单例的类
    /// </summary>
    public class Foo
    {
        private int count = 0;

        public int Count
        {
            get
            {
                count++;
                return count;
            }
        }
    }

    /// <summary>
    /// 主函数
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //连续调用三次如果值是递增的话说明三次调用都是同一个实例
            Console.WriteLine(Singleton<Foo>.Instance.Count);
            Console.WriteLine(Singleton<Foo>.Instance.Count);
            Console.WriteLine(Singleton<Foo>.Instance.Count);

            Console.ReadLine();
        }
    }
}

时间: 2024-09-20 06:10:52

C#2.0中用范型实现单例模式的相关文章

.NET 2.0 基础类库中的范型——其他范型类

其他范型类.NET 2.0 基础类库对范型的应用当然并不仅限于范型集合和 Functional Programming.下面所列的范型类也都有其明确的设计目的和用途. Array在.NET 2.0中,Array 类扩充了对范型编程的支持.当然,Array类本身并不是范型类(出于兼容的考虑),而是提供了一系列支持范型的方法.除了前面提到的 Functional Programming 的支持外,Array 类还对以前很多基于 object 的方法提供了对应的范型版本,这样对值类型可以提高查找和排序

.Net Framework 2.0范型的反射使用

在.Net Framework 2.0中引入了范型(Generic)的概念,这可以说是一个重大的改进它的好处我在这里也不用多说,到网上可以找到非常多的说明. 我在这里要和大家说的是怎么通过反射使用范型的技术. 一:首先看看范型的FullName List<string> list = new List<string>(); System.Console.WriteLine(list.GetType().FullName);System.Console.WriteLine(); 这个

.NET 2.0 基础类库中的范型——范型集合

集合 范型集合毫无疑问,范型最典型的应用莫过于范型集合了.在 .NET 2.0 中提供了已有集合类和接口的范型版本,它们位于 System.Collections.Generic 命名空间中. .NET 2.0 中新的范型集合类并不是简单的在已有非范型集合类的设计上多加了个范型参数 T 而已.新的范型集合类的设计充分吸收了已有设计中的合理之处并摒弃了一些不甚合理之处,同时引入了新的针对范型的设计.所以,新的范型类和接口的设计应该更加合理和有效,不过 .NET 程序员则需要花些时间学习新的设计并了

.NET 2.0 基础类库中的范型——Functional Programming

Functional ProgrammingFunctional Programming 不是一个新鲜的概念了,例如 C++ 虽然不是一门 Functional Programming 语言,但对它也有变通的支持--通过使用模板,函数对象(Function Objects)和运算符重载等手段,STL.Boost 等库提供了巧妙无比的.高性能的算法和功能.长久以来似乎 C++ 能实现的这些特性对于诸如 Java 和 C# 这些强调类型安全的面向对象的编程语言和框架来说是绝缘的.现在,在 CLR 范

在Eclipse 3.1中体验J2SE 5.0的新特性: 第三部分 :范型

J2SE 5.0 (Tiger)的发布是Java语言发展史上的一个重要的里程碑, 是迄今为止在 Java 编程方面所取得的最大进步. J2SE 5.0提供了很多令人激动的特性.这些特性包括范型(generics)的支持, 枚举类 型(enumeration)的支持, 元数据(metadata)的支持, 自动拆箱(unboxing)/装箱 (autoboxing), 可变个数参数(varargs), 静态导入(static imports), 以及新的线程架 构(Thread framework)

WF4.0 基础篇(二十三) 范型Activity

范型Activity Activity public sealed class GenericActivity<T> : CodeActivity { public InArgument<ICollection<T>> myCollection { get; set; } protected override void Execute(CodeActivityContext context) { ICollection<T> list = this.myCo

Java网络协议 TCP和客户端/服务器范型

服务器|客户端|网络 在网络编程中(同样在其它形式的通讯中,例如数据库编程),使用套接字的应用程序也被分为两类--客户端程序和服务器程序.你可能对"客户端/服务器编程"术语比较熟悉,尽管这个术语的准确意思你不一定清楚.下面的范例就是讨论这个主题. 1. 客户端/服务器范型 客户端/服务器范型把软件分为两类--客户端程序和服务器程序.客户端软件启动一个连接并发送请求,而服务器软件监听连接并处理请求.在UDP编程环境中,没有建立实际的连接,并且UDP应用程序可以在相同的套接字上建立并接收请

c#范型体验1

写了点代码,初次体验到C#范型的魅力 class Program { static void WriteSometing<T>(T x,T y) { if (typeof(T) == typeof(int)) Console.WriteLine(x); if (typeof(T) == typeof(string)) Console.WriteLine(y); } static void Main(string[] args) { WriteSometing<int>(0, 9);

Java范型知识

我相信很多人跟我一样还未学习过范型的概念就开始使用范型的实例,最典型的就是集合框架.为了 进一步深入了解范型,这一次通过几个简单的例子来说明范型的注意事项. 一.没有范型的世界 所有的java类都派生自java.lang.Object ,这意味着所有的java对象都可以转换成Object,听起来似乎 很美妙,但事实并非如此.举个例子,假设现在需要一伙人去排队,要求只有学生可以参与进来,但是如 果对于这个队伍没有条件限定的话,那就意味着我们不想要的一些群体也会进入大军之中,这不利于管理 .再如下面