面相对象

static关键字

预计阅读时间1 分 10 views

前言

在C#中,static 关键字用于定义静态成员,这些静态成员属于类本身,而不是类的实例。使用 static 关键字可以确保一个类的所有对象共享同一份静态成员,而不是每个对象都有独立的副本。

作用

  • 节省内存:静态成员在类加载时创建,所有对象共享这些静态成员,从而节省内存。
  • 全局访问:静态成员可以通过类名直接访问,而不需要创建类的实例。
  • 类级别功能:静态方法和变量常用于定义类级别的功能和数据。

使用场景

  • 常量定义:定义常量或全局共享数据,例如应用程序的配置或常量值。
  • 工具类:创建不需要实例化的工具类,提供通用的功能和方法。
  • 单例模式:实现单例模式,确保一个类只有一个实例,并提供全局访问点。

示例

示例 1: 静态变量与实例变量

using System;

namespace StaticKeyword {
    class Student {
        // 静态变量
        public static string department = "计算机科学";
        // 实例变量
        public string studentName;
    }

    class Program {
        static void Main(string[] args) {
            // 访问静态变量
            Console.WriteLine("系别: " + Student.department);

            // 创建 Student 对象
            Student s1 = new Student();
            s1.studentName = "张三";
            Console.WriteLine("学生姓名: " + s1.studentName);

            Student s2 = new Student();
            s2.studentName = "李四";
            Console.WriteLine("学生姓名: " + s2.studentName);
            Console.WriteLine("系别: " + Student.department);

            Console.ReadLine();
        }
    }
}

输出

系别: 计算机科学
学生姓名: 张三
学生姓名: 李四
系别: 计算机科学

在这个示例中,Student 类有一个静态变量 department 和一个实例变量 studentName。静态变量 department 通过类名 Student 访问,而实例变量 studentName 是每个对象独有的。

示例 2: 静态方法与非静态方法

using System;

namespace StaticKeyword {
    class Test {
        // 非静态方法
        public void Display1() {
            Console.WriteLine("非静态方法");
        }

        // 静态方法
        public static void Display2() {
            Console.WriteLine("静态方法");
        }
    }

    class Program {
        static void Main(string[] args) {
            Test t1 = new Test();
            t1.Display1(); // 访问非静态方法
            Test.Display2(); // 访问静态方法

            Console.ReadLine();
        }
    }
}

输出

非静态方法
静态方法

在这个示例中,Test 类中定义了一个非静态方法 Display1 和一个静态方法 Display2。非静态方法通过对象 t1 调用,而静态方法通过类名 Test 调用。

示例 3: 静态类

using System;

namespace StaticKeyword {
    static class Test {
        static int a = 5;

        static void Display() {
            Console.WriteLine("静态方法");
        }

        public static void Main(string[] args) {
            // 访问静态字段和方法
            Console.WriteLine(a);
            Display();
        }
    }
}

输出

5
静态方法

在这个示例中,Test 类被声明为静态类。静态类不能被实例化,只能包含静态成员。我们直接访问了静态字段 a 和静态方法 Display

结语

C#中的static关键字为类成员提供了一个共享的全局访问点,这样可以有效地节省内存并简化代码。理解和正确使用静态成员对于设计高效、组织良好的代码是非常重要的。通过静态成员,我们能够在没有创建类实例的情况下访问和操作数据,从而提升了代码的灵活性和可维护性。

Leave a Comment

分享此文档

static关键字

或复制链接

内容