31.C#:关键字static

简介: 31.C#:关键字static

C#:关键字static

静态关键字在编程语言中具有广泛的应用,无论是控制变量的存储期,还是定义静态成员函数,亦或是修饰静态局部变量,都有着独特的地位和作用。

 

## 1. static在变量存储期的奥秘

 

在编程语言中,static关键字最常见的用途是用于控制变量的存储期。以C++为例,当我们在类中使用static关键字定义一个变量时,该变量并不属于某个特定的对象,而是属于整个类。这意味着,无论我们创建多少个该类的对象,这个变量只有一份拷贝,并且它的生命周期与程序的整个运行周期相同。

 

image.png

Java中,static关键字也有类似的作用。当我们用static关键字定义一个类变量时,它同样属于整个类,而不是某个特定的对象。这意味着,无论我们创建多少个类的实例,这个变量只有一份拷贝,并且它的存储期与Java虚拟机(JVM)的运行周期相同。

 

image.png

## 2. static在成员函数中的秘密

 

除了控制变量的存储期,static关键字还可以用于定义静态成员函数。静态成员函数与静态变量类似,它们并不属于某个特定的对象,而是属于整个类。这意味着,我们可以通过类名直接调用静态成员函数,而不需要创建类的实例。

 

image.png

## 3. static在修饰符中的独特地位

 

与其他关键字相比,static关键字在修饰符中的地位相当特殊。在C++和Java中,static关键字既可以作为类成员的修饰符,也可以作为局部变量的修饰符。然而,这两种用法有着本质的区别。

 

作为类成员的修饰符,static表示该成员属于整个类,而不是某个特定的对象。这与其他成员变量和成员函数的性质不同,它们的生存周期依赖于对象的创建和销毁。

 

作为局部变量的修饰符,static表示该变量在函数调用结束后仍然保持其值。这意味着,每次调用函数时,静态局部变量都会保留上一次调用结束时的值,而不是重新初始化。

 

image.png

Java中,静态局部变量的用法与C++类似。

 

image.png

## 4. static关键字的泛化:静态成员类型

 

在某些编程语言中,static关键字还可以用于定义静态成员类型。例如,在C++中,我们可以使用static关键字定义一个静态枚举类型。

 

image.png

Java中,我们可以使用static关键字定义一个静态类。

 

image.png

静态关键字在编程语言中具有广泛的应用,无论是控制变量的存储期,还是定义静态成员函数,亦或是修饰静态局部变量,都有着独特的地位和作用。

目录
相关文章
|
1月前
|
C#
30.C# 关键字 this初步学习
30.C# 关键字 this初步学习
15 1
|
1月前
|
C#
28.c#关键字base初步学习
28.c#关键字base初步学习
11 0
|
1月前
|
C#
27.c#关键字sealed修饰类
27.c#关键字sealed修饰类
12 0
|
2月前
|
SQL 开发框架 .NET
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
22 0
|
3月前
|
开发框架 .NET 编译器
C# 9.0中的静态匿名函数:引入static关键字的新用法
【1月更文挑战第15天】C# 9.0为匿名函数带来了一个新的修饰符static,允许开发者明确指定匿名函数不会捕获其包含作用域中的任何变量。这一特性增强了代码的性能和可读性,同时减少了因不小心捕获变量而导致的潜在错误。本文将详细探讨C# 9.0中静态匿名函数的语法、使用场景以及它们如何影响代码的性能和安全性。
|
1月前
|
C#
29.C#关键字throw初步学习
29.C#关键字throw初步学习
19 0
|
2月前
|
存储 编译器 C#
C#关键字常见面试题
C#关键字常见面试题
|
7月前
|
存储 编译器 C#
C#关键字相关面试题
C#关键字相关面试题
|
3月前
|
C# 数据安全/隐私保护 开发者
C# 9.0中的Init关键字:Init-only Setters的新篇章
【1月更文挑战第12天】本文介绍了C# 9.0中引入的Init关键字,该关键字允许创建仅在对象初始化时可设置属性的setter。通过Init-only setters,开发者能够更加灵活地控制对象属性的赋值时机,提高代码的可维护性和安全性。文章详细解释了Init关键字的使用方法、适用场景以及与传统setter的区别,并探讨了其在实际开发中的潜在影响。
|
4月前
|
C# Kotlin
C#is、as关键字及获取当前活动窗体的实例
这篇日志记录一下C#中is关键字及as关键字的用法。 Is :判断检查对象是否与给定类型兼容 As :将对象转换为指定类型(强转),就跟(int )这样的用法是一样的。 获取当前窗体的活动子窗体。
23 0