C#泛型-小心使用静态成员变量】的更多相关文章

对于泛型类的声明 其中使用类型参数的构造类型,比如List<T>被称为开放构造类型(open constructed type)而不使用类型参数的构造类型,例如List<int>被称为封闭构造类型(closed constructed type). 特别要强调的是不同类型参数的封闭构造类型之间是不共享静态成员变量的. 举个例子 using System; public class List<T> {        public List(T t)     {      …
果然还是不够细心啊,被坑一晚上.. 一个极其简单的小程序,但是需要通过xml文件配置注入一个值,唯一的特别是要注入的属性是类中的静态成员变量.. 如下,然后自动生成get和set方法..坑就从此开始了... public class Food{ private static String desc; public static String getDesc(){ return desc; } public static void setDesc(String desc){ Food.desc =…
参考: http://blog.csdn.net/morewindows/article/details/6721430 http://www.cnblogs.com/lzjsky/archive/2011/01/24/1943199.html 分析Qt程序时,碰到下面代码. QString str = QString("QFrame#avatar{border-image:url(%1.jpg)}").arg( QString::number(i) );   静态成员变量 静态成员函…
一般情况下,如果有N个同类的对象,那么每一个对象都分别有自己的成员变量,不同对象的成员变量各自有值,互不相干.但是有时我们希望有某一个或几个成员变量为所有对象共有,这样可以实现数据共享. 可以使用全局变量来达到共享数据的目的.例如在一个程序文件中有多个函数,每一个函数都可以改变全局变量的值,全局变量的值为各函数共享.但是用全局变量的安全性得不到保证,由于在各处都可以自由地修改全局变量的值,很有可能偶然失误,全局变量的值就被修改,导致程序的失败.因此在实际开发中很少使用全局变量. 如果想在同类的多…
pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;} .selfFuc{color:#800080;} .bool{color:#d2576f;} .condition{color:#000080;font-weight:bold;} .key{color:#000080;} .…
静态成员变量 可以使用类名调用,如 class Dog { static int age; } class Test2{ public static void main(String args[]){ Dog.age=10; //类名调用 } } 也可以用调用普通成员变量的方法调用,普通成员变量和静态成员变量的区别在于,静态成员变量被所有对象共用. class Test2{ public static void main(String args[]){ Dog d1=new Dog(); Dog…
代码: #include <iostream> #include <string> #include <cstdio> using namespace std; class A{ public: static int a; //static int a = 0; //编译不通过,无法在类内初始化 int b; static void func1(){ cout<<"static func"<<endl; a++; //b++;…
最近一直看c++相关的项目,但总是会被c++类中的静态成员变量与静态成员函数的理解感觉很是模糊,不明白为什么类中要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下. 静态成员的概念: 静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员先于类的声明而存在于内存,也可以根据类声明的对象来访问.而非静态成员必须实例化之后才会分配内存. 非静态成员的概念: 所有没有加static的成员都是非静态成员.而类被实例化后,可以通过实例化的类…
今天去面试的时候被一道题问得一点脾气都没有,今天特地来研究下. 子类成员变量,子类静态成员变量,子类构造函数,父类成员变量,父类静态成员变量,父类构造函数的执行顺序. 现在贴上从另外一个.net程序员写的实例,稍微改下. public class ShowInfo { public ShowInfo(string info) { Console.WriteLine(info); } } class father { public static ShowInfo StaticFatherMembe…
其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们 都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份.然而非静态成员变量和非静态成员函数是针对类的对象而言. 然而从本质上来说类的静态成员函数的函数形参中没有默认的this指针,导致不能调用具体实例对象的成员. 下面我们来测试一下: 先在静态成员函数中调用静态成员变量: #include <iostream> using namespace std; class vpoe…
C++类静态成员变量和const常量在定义类的时候就必须初始化,否则都会编译出错. 而具初始化方法为: C++类静态成员变量初始化方法 #include <iostream> #include <string> #include <cstdio> #include <cstring> using namespace std; class A{ public: static void fun() { ab = 2; cout << ab <&…
一个最简单Singleton的例子: ///////// Test.h /////////template <class _T>class CTest{private:_T n;static CTest<_T>* m_pInstance;   // Notice: static member variable in template classprivate:CTest() { n = 0; }~CTest() { }public:static CTest<_T>* I…
静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; //静态成员变量在项目刚运行的时候就分配内存,项目运 //行结束以后才销毁. // //2.静态成员变量被它所属类创建的所有对象共享. // //3.静态成员变量必须在类体外初始化. //格式为:类型 类名∷静态成员变量 = 初值 //例: int Stu :: a = 20; // //4.访问静态成…
没有父类的情况 1,静态代码块-->静态成员变量-->成员变量(实例属性)-->代码块-->构造函数 2, 静态代码块 和 静态成员变量 只会初始化一次 有父类的情况 1,父类非Object 静态成员变量 -- > 静态代码块 代码块-->成员变量(实例属性)-->构造函数 2, 父类是Object (其实相当于没有父类) 成员变量(实例属性)-->代码块-->构造函数 静态代码块 -->静态成员变量 基本所有的这一块度可以用上面的总结来判断(个…
笔记8提到了类静态成员变量的访问方式,但静态成员变量存储在哪里呢?在网上查阅不少资料,发现好多内容都是过时的了,其中主流观点是静态成员变量存放在方法区.JDK8之前,静态成员变量确实存放在方法区:但JDK8之后就取消了"永久代",取而代之的是"元空间",永久代中的数据也进行了迁移,静态成员变量迁移到了堆中(方法区是JVM的规范,永久代是方法区的具体实现). 作者: 蝉蝉 请尊重作者劳动成果,转载请在标题注明"转载"字样,并标明原文链接: http…
(注:静态变量修改为静态成员变量,静态方法改为静态成员方法) 静态成员变量又称类变量,静态成员方法又称类方法,它们统称为静态成员或类成员.静态成员由static修饰,是属于整个类的,所有的对象共享这些静态成员.不需要创建任何对象,静态成员在类装载时就已初始化了,整个运行期间其内存位置不变,直到类卸载.鉴于静态成员的这些特性,访问静态成员变量以及定义或调用静态成员方法时与非静态成员也有不同之处.下面分别做出说明. 1.静态成员变量 类的非静态成员方法.静态成员方法都可以直接访问静态成员变量 其他类…
首先回顾下成员变量 能通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 再来讲讲类的静态成员变量 介绍 静态成员变量属于整个类所有 静态成员变量的生命期不依赖于任何对象(如同全局变量) 可以通过类名直接访问公有(public)静态成员变量 所有对象共享类的静态成员变量 可以通过对象名访问公有(public)静态成员变量 特性 在类里定义时直接通过static关键字修饰 静态成员变量需要在类外单独分配空间 静态成员变量在程序内部位于全局数据区 例如:…
static类成员 类成员类似于C语言的全局变量,但是与全局变量又有所不同,例如,全局变量是可以被任何的用户代码所修改,而且全局变量破坏了对象的封装性. 使用类的 static 成员的优点 使用 static 成员而不是全局对象有三个优点.1. static 成员的名字是在类的作用域中,因此可以避免与其他类的成员或全局对象名字冲突.2. 可以实施封装.static 成员可以是私有成员,而全局对象不可以.3. 通过阅读程序容易看出 static 成员是与特定类关联的. 这种可见性可清晰地显示程序员…
[Java笔试真题]:构造方法.成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的? [解答]:当类第一次被加载的时候,静态变量会首先初始化,接着编译器会把实例变量初始化为默认值,然后执行构造方法. Java程序的初始化一般遵循以下三个原则(以下三原则优先级依次递减): ① 静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次: ② 父类优先于子类进行初始化: ③ 按照成员变量定义顺序进行初始化,即使变量定义散布于方法…
在学习多线程的时候用到了匿名内部类,匿名内部类可以访问static静态成员变量或者final修饰的局部变量. 匿名内部类在编译之后会生成class文件,比如Test内的第一个匿名内部类编译之后就是Test$1.class: 匿名内部类中访问的final修饰的局部变量在生成Test$1.class之后会作为构造方法的参数传入class中;如果匿名内部类访问的是另一个类的静态成员变量则直接访问,不会作为构造方法的参数. 1.访问final修饰的局部变量 局部变量需要是final修饰,如果访问方法参数…
ps:下面所说 成员=成员变量+成员函数: 作用 由于对象与对象之间的成员变量是相互独立的.所以要想共用数据,则需要使用静态成员和静态函数. 空间分配 静态成员是在程序编译时分配空间,而在程序结束时释放空间. ps:一般的成员在对象建立时会分配空间,在对象撤销时会释放. 声明和定义 静态成员的定义和声明要加个关键static. 初始化 初始化静态成员变量要在类的外面进行.static关键字只能用于类定义体内部的声明中,定义时不能标示为static. 初始化的格式如下:数据类型 类名::静态成员变…
[1]如下代码及编译错误 如标题,不做赘述. [2]原因及解决方案 原因:之所以报如上编译错误,因为静态成员变量未初始化. 解决方案:类中静态成员需要在类外进行初始化.其格式为:类型 类名::静态成员变量名 = 默认值; 初始化后,再编译.结果如下图: Good Good Study, Day Day Up. 顺序  选择  循环  总结…
非静态成员变量,分别两种可能,要么类自定义,要么继承而来.根据<深度探索C++对象模型>的解读. class X { private: int x,y,z; }; 在这个类中,有三个私有成员变量(不管私有,保护,或公有),都按照某个次序排列(一般根据定义的先后顺序),唯一需要注意的是:某些变量需要对齐填充.在内存中的排列次序依次为:x,y,z:假如需要对这三个变量进行操作,实际会在成员函数中填充一个指针,参照<深入浅出MFC>. class X { public: void f()…
1.类的静态成员变量 .h 类声明入下 class A { public: static int x; }; .cpp文件 这样初始化. ; 2.定时器使用 1.SetTimer(HWND,UINT,UINT,TIMERPROC); 第一个参数设置为捕获该定时消息的窗口句柄, 第二个参数是定时器的id,第三个是以毫秒为单位的定时长度,最后一个参数设置为NULL,可以使窗口的回调函数进行处理WM_TIMER消息.一般来 说,在窗口创建时进行SetTimer调用:在回调函数中添加WM_TIMER的响…
转自http://bbs.csdn.NET/topics/370001490 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 栈区: 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问. 3.栈分为3个部分:基本类型变…
1.非静态成员变量 当成员变量为非静态成员变量且对当前类进行实例化时,将会产生死循环 例子: public class ConstructorCls { private ConstructorCls obj=new ConstructorCls(); } public class TestC { public static void main(String[] args) { ConstructorCls c =new ConstructorCls(); } } 结果: Exception in…
静态成员变量成员函数 思考:每个变量,拥有属性.有没有一些属性,归所有对象拥有? 4.1静态成员变量 1)定义静态成员变量 关键字 static 可以用于说明一个类的成员, 静态成员提供了一个同类对象的共享机制 把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 static 成员 静态成员局部于类,它不是对象成员 例如: #include<iostream> using namespace std; class  counter { static  int…
package org.hanqi.zwxx; public class Test { static int i=47; public void call() { System.out.println("调用call()方法"); for(i=0;i<3;i++) { System.out.print(i+" "); if(i==2){ System.out.println("\n"); } } } public static void m…
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存. 静态成员的定义或声明要加个关键static.静态成员可以通过双冒号来使用即<类名>::<静态成员名>. 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和成员函数使用规则,再给出一个实例来加深印象.希望阅读本文可以使读者对类的静…
  我们知道在C#语言中创建一个类型的实例前,就应该初始化该类型的所有静态成员变量.C#语言为我们提供了静态初始化器和静态构造函数.其中,静态构造函数是一个特殊的构造函数,将在其他所有方法执行前以及变量或属性被第一次访问之前将自动调用静态构造函数,且仅执行一次.我们可以通过使用静态构造函数来初始化静态变量.实现单例模式或者执行类在可用之前的所有操作.但是不能够使用实例构造函数专门的私有函数或者其他什么方式来初始化静态变量. 静态类成员变量也有和实例成员类似的初始化器语法,如果只是需要为某个静态成…