MSDN上的定义

Use the static modifier to declare a static member, which belongs to the type itself rather than to a specific object. The static modifier can be used with classes, fields, methods, properties, operators, events, and constructors, but it cannot be used with indexers, destructors, or types other than classes.

具体为:

1. 类
       静态类只用于包含静态成员的类型,不能实例化,静态类的特性是防止继承,防止外部来创建对象。
       1.静态类不能有构造函数
       2.静态类不能有任何实例成员。
       3.静态类的成员不能有protected或protected internal访问保护修饰符。
       4.静态类不能使用abstract或sealed修饰符。
       5.静态类不能指定任何接口实现。

2. 字段
       数据成员包括:静态变量和非静态变量两种
       静态变量:带有static 修饰符的变量称为静态变量。
       非静态变量:不带有static修饰符声明的变量称为非静态变量,又叫实例变量。
       类中的成员变量要么是静态,要么是非静态的。
       静态成员变量是属于类所有的,非静态成员则属于类的实例——对象。
       静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。

       静态类成员的调用
       类名.成员字段
       类名.成员方法([参数列表])

       非静态类成员的调用
       类名 对象名 = new 构造函数名([参数列表])
       对象名.成员字段名
       对象名.成员方法([参数列表])

3. 方法
       静态方法在程序运行的过程中内存为其赋予固定的空间。
       静态方法不属于类的某一个具体的实例,而是属于类本身。
       非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。
       静态方法的格式
       类名.静态方法
       例如,string text3 = Button.ButtonName();
       静态方法优缺点
       优点:该方法作用于整个程序的运行过程,可以直接调用,数据全局存在。
       缺点:静态方法在程序运行过程中不会自动销毁,占用内存空间。

      静态方法与非静态方法访问关系总结

 

静态方法

静态成员 (在程序启动时最早被赋值)

非静态方法

非静态成员(在创建类对象后被赋值)

静态方法

Y

Y

N

N

非静态方法

Y

Y

Y

Y

4. 属性
5. 运算符
6. 事件
7. 构造函数
       用于对静态字段、只读字段等的初始化
       添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。
       类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数.静态构造函数是不可继承的,而且不能被直接调用。
       静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。

C#的.cs文件具有如下结构:

  1. 引用
  2. 命名空间
  3. 方法

using MS.Internal.Mita.Foundation;
using TestCommon.UI.Mita;

//以上为1. 引用

namespace EndToEndTest.ControlLibrary //2.命名空间
{
    public class Button //3.类
    {
        private string text;

        public void SetText(string value) // 4.方法
        {
            text = value;
        }

    public Button()
    {
    }

    public string GetText()
    {
        return text;
    }
    public static string ButtonName()
    {
        string test = "test";
        return test; // return和声明变量不能写在一行。这个是一个语法要求。
    }
}

public class foo
{
    public void bar()
    {
        Button btn = new Button(); //动态方法的引用每一次调用都是不同的,比如说一个button可以多个名字。
        btn.SetText("hello");
        string text = btn.GetText();
        Button btn2 = new Button();
        btn.SetText("world");
        string text2 = btn2.GetText();
        string text3 = Button.ButtonName();//静态方法的引用可以直接用“类.”点出来,如果不是静态类,而是动态类的话则不能用”.”点出来。
    }
   
}

C# Static修饰符的作用的更多相关文章

  1. C#中static修饰符的作用

    static在C#中表示的是静态的,比如一个静态的字段是归类型所有,而非归对象所有,也就是说,在调用这个字段时,只能用类型去调,而不能用对象. 实例字段时随着对象创建而创建,对象销毁而销毁,而静态字段 ...

  2. static修饰符

    static修饰符表示静态的,可修饰字段.方法.内部类,其修饰的成员属于类,也就是说static修饰的资源属于类级别,而不是对象级别. static的正真作用:用来区别字段,方法,内部类,初始化代码块 ...

  3. transient修饰符的作用

    transient修饰符的作用: entity实体类: package com.baidu.entity; import com.fasterxml.jackson.annotation.JsonIg ...

  4. 4. static修饰符

    一.static修饰符概述 1. static修饰的成员表明它属于这个类本身,而不属于该类的单个实例 把static修饰的成员变量和方法称为类变量.类方法 2. 不使用static修饰的成员则属于该类 ...

  5. java final .static修饰符

    static静态修饰符(使用static修饰符修饰的成员变量.常量.和成员方法成为静态变量.常量和方法,他们统称为静态成员,归整个类所有,不依赖于类的特定实例,被类的所有实例共享,只要这个类被加载,J ...

  6. 【c++基础】static修饰的函数作用与意义

    static修饰的函数作用与意义 static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 如果这个静态函数出现在类里,那么它是一个静态成员函数: 静态成员函数的作用在于:调用这个 ...

  7. 201671010127 2016-2017-8 回谈static修饰符

    上周学了泛型程序程序设计技术,再一次接触到了静态方法,那么今天就来谈一下static修饰符. static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块, ...

  8. Java final和static 修饰符

    一.final final是不变的,最终的意思.可以用来修饰变量,方法,类. 1. 修饰变量 private final int a = 2; private final int b; // fina ...

  9. Java static修饰符

    Java static修饰符 static修饰符是静态修饰符,大家写Java第一次接触static就是主函数中的pubic static void main的声明了. 那么static有什么用?本文来 ...

随机推荐

  1. Subl 命令

    Subl 是sublime 的命令 添加环境变量后可以,在cmd 或者git 下直接 使用subl 进行 打开sublime Example:     Subl 打开编辑器     Subl . 将当 ...

  2. oracle 数据库 基础操作

    一.oracle基本常用的数据类型 varchar(长度) 字符串 char(长度) 字符 number(x,y) x表示总位数 y表示保留小数点后几位数 eg面试题:number(5,3)最大的数是 ...

  3. 人工智能: 自动寻路算法实现(四、D、D*算法)

    博客转载自:https://blog.csdn.net/kongbu0622/article/details/1871520 据 Drew 所知最短路经算法现在重要的应用有计算机网络路由算法,机器人探 ...

  4. SVN学习(一)——SVN 检出文件步骤、图标显示及含义

    May, I come... 1. 创建一个目录用来存放检出得到的文件,例如MyCRM 2. 直接进入目录MyCRM,点右键 3. 可以看到检出得到的文件 此时文件图标上没有任何标识.可能你会想到通过 ...

  5. 利用pandas进行数据分析之ndarray结构

    Numpy的重要特点就是其N维数组对象, 1.ndarray每个元素是相同的,每个数组都有一个两个对象: .shape:用于表示维度大小的元组 .dtype:用户表示数组类型的对象 2.创建数组 ar ...

  6. android中的样式主题和国际化

    一.Android中的样式和主题     1.1样式     样式是作用在控件上的,它是一个包含一个或者多个view控件属性的集合.android style类似网页设计中的css设计思路,可以让设计 ...

  7. 《我是一只IT小小鸟》(胡江堂主编)读后感

    http://blog.csdn.net/wojiushiwo987/article/details/8685539<我是一只IT小小鸟>(胡江堂主编)读后感 2011年下半年研二的时候, ...

  8. ActiveMQ介绍和ActiveMQ入门实例

    ActiveMQ百度百科   ActiveMQ入门实例-cnblogs.com      作者用的是5.5的版本,我测试时用的是5.6,按照作者说的整了一下,走得通

  9. 转MQTT SERVER 性能测试报告

    硬件环境: 内存4G CPU4核 SERVER及端口: apollo端口 61619 mosquitto:端口 1884 activeMQ端口:1883 emqtt 端口1885 测试方法 并发测试: ...

  10. Atitit.跨语言反射api 兼容性提升与增强 java c#。Net  php  js

    Atitit.跨语言反射api 兼容性提升与增强 java c#.Net  php  js 1. 什么是反射1 1.1.       反射提供的主要功能:1 1.2.       实现反射的过程:1 ...