• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#语法之static修饰符

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。例如,下面的类声明为 static,并且只包含 static 方法:

static class CompanyEmployee
{
blic static string GetCompanyName(string name) { ... }
blic static string GetCompanyAddress(string address) { ... }
}
  • 常数或者类型声明隐式地是静态成员。

  • 不能通过实例引用静态成员。然而,可以通过类型名称引用它。例如,请考虑以下类:

  • public class MyBaseC 
    {
        public struct MyStruct 
        {
            public static int x = 100;
        }
    }

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

    MyBaseC.MyStruct.x
  • 尽管类的实例包含该类所有实例字段的单独副本,但每个静态字段只有一个副本。

  • 不可以使用 this 来引用静态方法或属性访问器。

  • 如果对类应用 static 关键字,则该类的所有成员都必须是静态的。

  • 类和静态类可以有静态构造函数。静态构造函数在程序开始和类实例化之间的某个时刻调用。

  •  

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

     

    此示例读取新雇员的姓名和 ID,将雇员计数器加一,并显示新雇员的信息和新的雇员数。为简单起见,该程序从键盘读取当前的雇员数。在实际的应用中,应从文件读取此信息。

    // cs_static_keyword.cs
    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 static int employeeCounter;
     
        public static int AddEmployee()
        {
            return ++employeeCounter;
        }
    }
     
    class MainClass : Employee
    {
        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 and configure 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.AddEmployee();
     
            // Display the new information:
            Console.WriteLine("Name: {0}", e.name);
            Console.WriteLine("ID:   {0}", e.id);
            Console.WriteLine("New Number of Employees: {0}",
                          Employee.employeeCounter);
        }
    }

    结果为:

    Matthias Berndt
    AF643G
    15
    Enter the employee's name: Matthias Berndt
    Enter the employee's ID: AF643G
    Enter the current number of employees: 15
    Name: Matthias Berndt
    ID:   AF643G
    New Number of Employees: 16

    此示例说明:虽然可以用另一个尚未声明的静态字段实例化一个静态字段,但直到向后者显式赋值后,才能确定结果。

    // cs_static_keyword_2.cs
    using System;
    class Test
    {
       static int x = y;
       static int y = 5;
     
       static void Main()
       {
          Console.WriteLine(Test.x);
          Console.WriteLine(Test.y);
     
          Test.x = 99;
          Console.WriteLine(Test.x);
       }
    }

    结果为:

    0
    5
    99

    鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    热门推荐
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap