C# 中的静态类

王林
发布: 2024-09-03 15:32:30
原创
995 人浏览过

静态类是我们无法实例化的类。静态类唯一且最重要的目标是交出继承类的蓝图。它是在 C# 中的“static”关键字的帮助下创建的。静态类仅包含静态成员。我们无法为静态类创建对象。在本主题中,我们将学习 C# 中的静态类。

静态成员

C# 中的静态类由两种静态类型组成,如下所示:

1.静态数据成员

静态数据成员是通过使用 static 关键字来声明的,因为静态类始终包含静态数据成员。也可以使用类名直接访问它们。静态数据成员的内存是单独分配的,无论其与对象的关系如何。

语法:

static class NameOfClass
{
public static name_of_datamember;
}
登录后复制

示例:

public class Vehicle
{
public static int Wheels = 4;
public static int GasTank
{
get
{
return 23;
}
}
public static void move() { }
public static event EventType RunOutOfGas;
// Extra non-static fields as well as properties
}
登录后复制

它们在第一次访问静态成员之前以及在调用静态构造函数之前初始化。为了访问它,我们使用类的名称而不是变量名称。

2.静态方法

使用 static 关键字声明静态方法,因为静态类始终包含静态方法。这些方法只能访问静态数据成员,不能访问非静态数据成员。

语法:

static class name_of_class
{
public static name_of_method()
{
// code
}
}
登录后复制

C# 中静态类的示例

以下是下面提到的示例

示例#1

代码:

/*
* C# Program to Check whether the Entered Number is Even or Odd
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace check1
{
class EvenAndOdd
{
static void Main(string[] args)
{
int i;
if (4 % 2 == 0) // You can enter any number you wish to check for even / odd
{
Console.Write("Entered Number is an Even Number");
Console.Read();
}
else
{
Console.Write("Entered Number is an Odd Number");
Console.Read();
}
}
}
}
登录后复制

输出:

C# 中的静态类

示例#2

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public static class ABC {
// declaration of static Method
static void details()
{
Console.Write("Static Method of the class ABC is");
}
}
// Inheritance of the class ABC which would give an error since static
// class cannot be inherited
class ABC2 : ABC
{
public static void Main(String[] args)
{
}
}
登录后复制

输出:

C# 中的静态类

说明:在第一个示例中,通过使用 static 关键字有一个名为 Book 的静态类。 Book 类由静态数据成员 name、l 和 t 以及一个名为 specs() 的静态方法组成。静态类的该方法是通过类名Book来调用的。规格();。由于我们已经知道静态类不是由对象组成的,因此 Book 类的数据成员是通过其类名来访问的,即 Book.name、Book。 l 和 Book.t.

静态构造函数

与普通构造函数(即非静态构造函数)相比,静态构造函数基本上用于静态数据成员的初始化。

功能/规则:

  1. 他们不能拥有任何访问修饰符。
  2. 它们不能与参数一起定义。
  3. 他们无权访问非静态数据成员。

静态项的内存分配

你一定知道应用程序内存的基本组成部分是堆和栈。堆内的一个特殊区域称为高频堆,其中存储静态成员。非静态类的静态成员也存储在堆中,然后在该类的所有实例之间共享。因此,一个实例所做的更改会反映在所有其他实例中。

您一定已经知道,静态成员只能包含其他静态成员,因为无论实例是否创建,静态成员都会被调用。从今以后,他们将无法访问非静态成员。

C# 中静态类的优点

  1. 如果您、我们任何成员作为非静态成员,我们将收到错误。
  2. 如果我们尝试创建静态类的实例,则会再次生成编译时错误,因为静态成员可以与其类名一起直接访问。
  3. 在类定义中的class关键字之前使用static关键字来声明静态类。
  4. 静态类成员可以通过类名后跟成员名来访问。

结论

  • 我们无法使用 new 关键字实例化静态类
  • 静态项目只能访问其他静态项目。考虑静态类仅包含静态成员,如变量、方法等。
  • 静态方法仅包含静态变量,并且它们只能访问其余静态项。
  • 静态项目能够在多个用户之间共享资源。
  • 我们不能将 static 与索引器、析构函数或类以外的类型一起使用。
  • 此外,非静态类中的静态构造函数只会在该类第一次实例化时运行一次。
  • 此外,每当第一次访问任何静态成员时,静态类中存在的静态构造函数只会运行一次。
  • 静态成员被分配在内存的高频堆区域中。

以上是C# 中的静态类的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!