首页 > 其他分享 >泛型类的静态成员

泛型类的静态成员

时间:2023-09-05 15:14:57浏览次数:33  
标签:Singleton Instance 静态 成员 instance static 单例 泛型

简介

想对单例进行统一的管理,在UnityEditor进入playMode的时候,手动清空一些单例。
于是网上搜到了一个单例的写法,但是对其中的static字段产生的疑问。

令人产生疑问的代码

public class Singleton<T> 
    where T: Singleton<T>, new() 
{

    private static T _instance;

    public static T Instance 
    { 
        get 
        {
            if(_instance == null )
            {
                _instance= new T();
            }
            return _instance; 
        }
    }


}

这个代码令人奇怪的地方是,static是静态字段,泛型类传入type参数后,居然能够访问不同类的单例。比如 Singleton.Instance返回的是Class1类,Singleton.Instance返回的是Student类。

解释

C#中的泛型类(open)相当于一个蓝图,会根据填入的type参数,生成一个新的泛型类(closed),Singleton和Sington是两个不同的类,两个类中各自有一个和自己的类绑定的static字段。
这点和java是不同的。

参考

Unity监听PlayMode

stackoverflow上的讨论

标签:Singleton,Instance,静态,成员,instance,static,单例,泛型
From: https://www.cnblogs.com/dewxin/p/17679528.html

相关文章

  • [个人笔记][C#]泛型
    没有泛型时的问题用object实现的通用集合类型不安全,无法保证数据元素类型一致值类型会有额外的装箱拆箱开销类型特化的集合每有一个新类型就需要重新实现一遍泛型就是把类型作为参数,从而实现代码重用C#的泛型在处理值类型的时候不会有装箱,节省性能和内存省去类型检查的......
  • 喜报!谷器数据被认证为全国信标委软工分委会全权成员单位
    8月23日,全国信息技术标准化技术委员会软件与系统工程分技术委员会(简称:全国信标委软工分委会,SAC/TC28/SC7)批准通过新一批成员单位,北京谷器数据科技有限公司被成功授牌为全权成员单位。全国信标委软件与系统工程分委成立于1984年,是我国软件与系统工程领域国家权威标准化技术组织,在工......
  • flask设置静态文件目录、模板目录
    fromflaskimportFlask,render_templateapp=Flask(import_name=__name__,static_url_path='/',static_folder='static',template_folder='templates')#添加html访问路由@app.route('/')defblog():retur......
  • 20230602 反射中的泛型信息
    介绍Java泛型的突出特性之一是在虚拟机中擦除泛型类型,但是擦除的类仍然保留原先泛型的一些微弱记忆。例如,原始Pair类知道它源自于泛型类Pair<T>,尽管无法区分是Pair<String>还是Pair<Integer>为了描述泛型类型声明,java.lang.reflect包中提供了接口Type,包含以下子类型......
  • 解释C++中类的不同成员类型和成员列表的含义--GPT
    C++定义的class的PublicMemberFunctions|StaticPublicMemberFunctions|PublicAttributes|StaticPublicAttributes|StaticProtectedAttributes|Listofallmembers都是什么意思?GPT:在C++中,一个类(class)可以定义多种类型的成员,这些成员包括函数(成员函数)和变......
  • vue中引入图片等静态资源的几种方式
    在vue中引入图片等静态资源,由于部署的时候需要打包,打包后文件名字路径不一致,导致显示不了。以下为解决的几种方式:1.样式直接引入:<divclass="imgItem"><divclass="imgLogo"></div></div>.imgLogo{width:100px;height:100px;background:url('/@......
  • 1.Generic-泛型
    一Generic如果使用Object会有哪些问题?1.存在装箱、拆箱的性能问题2.如果使用额外元素,会存在类型不安全的问题.1引入泛型:延迟声明2如何声明和使用泛型3泛型的好处和原理4泛型类、泛型方法、泛型接口、泛型委托5泛型约束6协变逆变7泛型缓存泛型Generic本......
  • 动态库&&静态库&&MakeFile
    库文件概念库文件就是将一堆函数的源代码封装在一起,经过编译之后形成一种可执行的二进制代码(但是不可以独立执行),供自己或者他人调用在linux下,有非常多的目录存在库文件比如:/lib------>linux协同库文件,一般是linux自带的/usr/lib------>有的是系统自带的,有的是用户自定......
  • Java泛型
    Java泛型1.泛型概述泛型的本质是为了参数化类型(即限制参数类型为我们指定泛型类型)如这样:给list集合指定类型String//比如给List集合指定一个泛型(String),那么存入List集合中的元素必须要是String类型List<String>list=newArrayList<String>();2.泛型的优点限制变量的类......
  • 泛型
    泛型(Generics)UTS支持泛型(Generics)特性,允许您编写更通用、可重用的代码,同时提高类型安全性。#定义泛型泛型使用尖括号 <> 声明一个或多个泛型参数。#泛型函数泛型函数的泛型参数定义在函数参数的圆括号之前。functiontest<T>(arg:T):T{returnarg}conststr:s......