一、C#静态成员和非静态成员

1. C#静态成员和非静态成员

当类中的某个成员使用static修饰符时,就会被声明为静态成员。类中的成员要么是静态成员,要么是非静态成员。一般情况下,静态成员属于整个类所有,被该类的所有实例所共享。而非静态成员则属于类的实例——对象所有,只被该实例所共享。

因此,对于类的静态成员来说,无论这个类创建了多少个副本(实例),一个静态成员只占一块内存区域,而不会重复创建多个副本。同一静态成员在不同的实例中的值是相同的。

在静态函数中不能使用非静态成员,如非静态变量、非静态函数等。

而对于类的非静态成员来说,每创建一个类的实例,都会在内存中为非静态成员开辟一块区域,创建多少实例,就会开辟多少块区域。同一非静态成员在不同的实例中的值可能是不同的。

所以,静态成员占用的内存区域最少。

2. 访问静态成员的方式

可以通过“类名+圆点(.)+成员名”的方式来访问静态成员,不需要创建类的实例。

二、示例
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Program
    {
        class classTest
        {
            public static String staticStr = "class";  // 静态成员
            public String notstaticStr = "obj";        // 非静态成员
        }
        static void Main(string[] args)
        {
            // C#静态成员和非静态成员-www.baike369.com
            // 静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值
            Console.WriteLine("classTest's staticStr:{0}", classTest.staticStr);
            classTest obj1 = new classTest();
            obj1.notstaticStr = "obj1";
            classTest obj2 = new classTest();
            obj2.notstaticStr = "obj2";
            // 非静态变量通过实例(对象)进行访问,不同实例(对象)的同一非静态
            // 变量可以有不同的值
            Console.WriteLine("obj1's notstaticStr:{0}", obj1.notstaticStr);
            Console.WriteLine("obj2's notstaticStr:{0}", obj2.notstaticStr);
            Console.ReadLine();
        }
    }
}

运行结果:
  
classTest's staticStr:class
obj1's notstaticStr:obj1
obj2's notstaticStr:obj2

最新文章

  1. Git 子模块 - submodule
  2. Android listview和gridview以及view的区别
  3. 为什么说invalidate()不能直接在线程中调用
  4. centos6.4安装Apache+MySQL+PHP
  5. inline-block 左边固定,右边自适应
  6. iOS开发——UI基础-KVO
  7. python学习第二天第二部分
  8. SqlServer2008 数据库可疑
  9. Codeforces Round #274 (Div. 2) B. Towers
  10. ConfigurationManager 缓存刷新
  11. 给ThinkPHP5增加验证码功能
  12. CXF_Spring_Rest
  13. 如何增强ArcGIS插值图出图效果
  14. Spring01-IOC
  15. 使用Ext JS,不要使用页面做组件重用,尽量不要做页面跳转
  16. C# -- 结构、访问修饰符
  17. Qt5OpenGL.顶点像素大小设置
  18. str_replace中的匹配空白符,必须用双引号
  19. DLL对象类型转换
  20. ThreadLocal是否会引发内存泄露的分析 good

热门文章

  1. [转]jQuery: get table column/row index remove table column (by column number)
  2. Neutron命令测试5
  3. MATLAB线性回归方程与非线性回归方程的相关计算
  4. 基于log4net自定义异步logging组件
  5. Video 视频播放防作弊和禁止下载
  6. 使用InstallShield打包VS程序
  7. AutoResetEvent 2
  8. synchronized + volatile + ThreadLocal
  9. 服务器断电后 redis重启后启动不起来
  10. Maven,SVN,快捷键,数据库等