static

原创 2004年10月28日 10:27:00

使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类型。

备注

  • 常数或者类型声明隐式地是静态成员。
  • 不能通过实例引用静态成员。然而,可以通过类型名称引用它。例如,请考虑以下类:
    public class MyBaseC 
    {
       public struct MyStruct {
          public static int x = 100;
       }
    }

    若要引用静态成员 x,请使用完全限定名(除非可从相同范围访问):

    MyBaseC.MyStruct.x
  • 尽管类的实例包含该类所有实例字段的单独副本,但每个静态字段只有一个副本。
  • 不可以使用 this 引用静态方法或属性访问器。
    注意   static 关键字在使用上比在 C++ 中有更多限制。若要与 C++ 关键字进行比较,请参见 C++ Language Reference 中的 <?XML:NAMESPACE PREFIX = MSHelp NS = "http://msdn.microsoft.com/mshelp" />static。

为了说明实例成员,请看一个表示公司雇员的类。假设该类包含一种对雇员计数的方法和一个存储雇员数的字段。该方法和字段都不属于任何实例雇员,而是属于公司类。因此,应该将它们声明为此类的静态成员。

有关构造函数的更多信息,请参见 10.10 实例构造函数。

示例

该示例读取新雇员的名称和 ID,逐个增加雇员计数器并显示新雇员的有关信息以及新的雇员数。为简单起见,该程序从键盘读取当前的雇员数。在实际的应用中,应从文件读取此信息。

// cs_static_keyword.cs
// Static members
using System;
public class Employee 
{
   public string id;
   public string name;

   public Employee () 
   {
   }

   public Employee (string name, string id) 
   {
      this.name = name;
      this.id = id;
   } 

   public ;

   public static int AddEmployee() 
   {
      return ;
   }
}

class MainClass: Employee 
{
   public static void Main() 
   {
      Console.Write("Enter the employee's name: ");
      string name = Console.ReadLine();
      Console.Write("Enter the employee's ID: ");      
      string id = Console.ReadLine();
      // Create the employee object:
      Employee e = new Employee (name, id);
      Console.Write("Enter the current number of employees: ");
      string n = Console.ReadLine();
      Employee.employeeCounter = Int32.Parse(n);
      Employee.();
      // Display the new information:
      Console.WriteLine("Name: {0}", e.name);
      Console.WriteLine("ID:   {0}", e.id);
      Console.WriteLine("New Number of Employees: {0}",
                         );
   }
}

输入

Tara Strahan
AF643G

示例输出

Enter the employee's name: Tara Strahan
Enter the employee's ID: AF643G
Enter the current number of employees: 
Name: Tara Strahan
ID:   AF643G
New Number of Employees: 

请参见

C# 关键字 | 修饰符

static及其作用域

一、面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Exa...
  • celerylxq
  • celerylxq
  • 2011年01月24日 09:12
  • 10371

linux下编译静态(static)库

configure的时候要指定 --enable-static  ,因为很多平台没有基础库,指定该选项将免去一些不必要的麻烦。 #./configure --enable-static ...
  • RandyLeonard
  • RandyLeonard
  • 2014年01月15日 11:05
  • 1285

对C语言中的static关键字的深入理解

通过对static关键字的解析,讲述了其背后与编译,链接相关的原理。
  • on_1y
  • on_1y
  • 2014年04月22日 09:53
  • 14131

react中ES6语法报错:static propTypes,static defaultProps :modulbuild failed:SyntaxError

在ES6语法中创建组件,组件内部定义静态propTypes及defaultProps ,编译过程出现错误: modulbuild failed:SyntaxError 解决方法如下: 一  ...
  • qq_35388564
  • qq_35388564
  • 2017年07月25日 16:44
  • 935

关于static 定义的对象系统默认初始值

在Charles Petzold第五版的《windows程序设计》中,看到这样一些代码:                         #define DEVISIONS 5          ...
  • RichieVoe
  • RichieVoe
  • 2012年09月07日 18:17
  • 1380

const static 与static const的使用

 查看文章  C++ static、const和static const 以及它们的初始化2010-03-29 15:30C++   static、const和static const 以及它们的初始...
  • weishan521520
  • weishan521520
  • 2010年09月20日 15:17
  • 17090

private static 与 public static的区别

 一家之言,不足之处,还望海涵。 static: 静态成员,不能实例化,在你运行的时候他自己在内存中开辟了块空间,不用new, 有点像全局变量static是静态的意思,public或private与其...
  • qishi0301
  • qishi0301
  • 2009年09月25日 22:37
  • 33749

浅出理解静态成员函数(static member function)

  在转入正题之前,我觉得应该先提出两个我本人自定义的术语:类级成员(class level member)和对象级成员(object level member)。我不知道在C++领域里是否已经有这样...
  • danky
  • danky
  • 2006年12月17日 20:25
  • 12105

java面试题之static

java面试题之static
  • zhangxiaomin1992
  • zhangxiaomin1992
  • 2016年03月30日 15:40
  • 1712

内部类学习(五)--静态内部类(Static Inner Class)

这里介绍最后一种比较特殊的内部类――静态内部类(Static Inner Class),即在内部类的前面增加了static修饰符(modifier)。注意,仅仅只有内部类能够被声明为static类型,...
  • CMTobby
  • CMTobby
  • 2006年09月29日 09:03
  • 6581
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:static
举报原因:
原因补充:

(最多只允许输入30个字)