ホームページ  >  記事  >  バックエンド開発  >  C# の静的クラス

C# の静的クラス

王林
王林オリジナル
2024-09-03 15:32:301176ブラウズ

静的クラスはインスタンス化できないクラスです。静的クラスの唯一かつ最も重要な目的は、継承されたクラスのブループリントを引き継ぐことです。これは、C# の「static」キーワードを使用して作成されます。静的クラスには静的メンバーのみが含まれます。静的クラスのオブジェクトを作成することはできません。このトピックでは、C# の静的クラスについて学習します。

静的メンバー

C# の静的クラスは、以下に示す 2 種類の静的クラスで構成されます。

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. 非静的データ メンバーにはアクセスできません。

静的アイテムのメモリ割り当て

アプリケーションのメモリの基本コンポーネントはヒープとスタックであることはご存知でしょう。ヒープ内の特別な領域は高周波ヒープと呼ばれ、静的メンバーが格納されます。非静的クラスの静的メンバーもヒープに格納され、クラスのすべてのインスタンス間で共有されます。したがって、1 つのインスタンスによって行われた変更は、他のすべてのインスタンスに反映されます。

すでにご存知かと思いますが、静的メンバーはインスタンスの作成に関係なく呼び出されるので、静的メンバーには他の静的メンバーのみを含めることができます。今後、非静的メンバーにはアクセスできなくなります。

C# の静的クラスの利点

  1. あなたや私たちメンバーのいずれかが非静的メンバーである場合、エラーが発生します。
  2. 静的メンバーにはクラス名とともに直接アクセスできるため、静的クラスのインスタンスを作成しようとすると、やはりコンパイル時エラーが生成されます。
  3. static キーワードは、静的クラスを宣言するために、クラス定義の class キーワードの前に使用されます。
  4. 静的クラスのメンバーには、クラス名の後にメンバー名を指定することでアクセスできます。

結論

  • new キーワードを使用して静的クラスをインスタンス化することはできません
  • 静的アイテムは、他の静的アイテムにアクセスする機能のみを持ちます。静的クラスには、変数、メソッドなどの静的メンバーのみが含まれると考えてください。
  • 静的メソッドには静的変数のみが含まれており、残りの静的項目にのみアクセスできます。
  • 静的アイテムには、複数のユーザー間でリソースを共有する機能があります。
  • 静的をインデクサー、デストラクター、またはクラス以外の型と一緒に使用することはできません。
  • さらに、非静的クラスの静的コンストラクターは、クラスが初めてインスタンス化されるときに 1 回だけ実行されます。
  • また、静的クラスに存在する静的コンストラクターは、静的メンバーのいずれかが初めてアクセスされるたびに 1 回だけ実行されます。
  • 静的メンバーは、メモリの高頻度ヒープ領域に割り当てられます。

以上がC# の静的クラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。