English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
クラスは特定のオブジェクトの青写真のようにです。現実世界では、各オブジェクトには色、形状、機能があります-例えば、豪華なスポーツカーのフェラリ。フェラリは豪華な車のオブジェクトです。豪華な車は速度、色、形状、インテリアなどの特性を示すクラスです。したがって、これらの要件を満たす自動車を作成する会社はすべて豪華な車のオブジェクトです。例えば、BMW、ランボルギーニ、キャデラックの各車は「豪華な車」のクラスのオブジェクトです。ここで、「豪華な車」は一つのクラスであり、実在する各車は豪華な車のクラスのオブジェクトです。
同様に、オブジェクト指向のプログラミングでは、クラスは属性、フィールド、イベント、メソッドなど、いくつかの要素を定義します。クラスはデータの種類及其オブジェクトが持つ機能を定義します。
クラスは他のタイプ、メソッド、イベントの変数をグループ化してカスタムタイプを作成するために使用されます。
C#では、classキーワードを使用してクラスを定義できます。
public class MyClass { public string myField = string.Empty; public MyClass() { } public void MyMethod(int parameter1, string parameter2) { Console.WriteLine("First Parameter {0}, second parameter {1}1, パラメータ2); } public int MyAutoImplementedProperty { get; set; } private int myPropertyVar; public int MyProperty { get { return myPropertyVar; } set { myPropertyVar = value; } } }
以下の図はC#クラスの重要な構成要素を示しています。
アクセス修飾子はクラス、メソッド、属性、フィールド、その他のメンバーの宣言に適用されます。それらはクラス及其メンバーの可視性を定義します。public、private、protected、internalはC#のアクセス修飾子です。これについて、キーワード部分で説明します。
このフィールドは値を持つクラスレベルの変数です。通常、フィールドメンバーはプライベートなアクセス修飾子を持ち、属性と一緒に使用されます。
クラスはパラメータ付きまたはパラメータなしのコンストラクタを持つことができます。クラスのインスタンスを作成する際には、コンストラクタが呼び出されます。アクセス修飾子とクラス名を使用してコンストラクタを定義できます:
<アクセス修飾子> <class 名前>(){ }
class MyClass { public MyClass() { } }
以下テンプレートを使用してメソッドを定義できます:
{access modifier} {return type} MethodName({parameterType parameterName})
public void MyMethod(int parameter1, string parameter2) { // 여기에 메서드 코드를 작성하세요. }
getter와 setter를 사용하여 속성을 정의할 수 있습니다. 다음과 같이 사용할 수 있습니다:
private int _myPropertyVar; public int MyProperty { get { return _myPropertyVar; } set { _myPropertyVar = value; } }
속성은 프라이빗 필드를 포함합니다. getters(get {})를 사용하여 기본 필드의 값을 검색하고 setters(set {})를 사용하여 기본 필드의 값을 설정할 수 있습니다. 위의 예제에서 _myPropertyVar는 프라이빗 필드로, 직접 접근할 수 없습니다. 오직 MyProperty를 통해 접근할 수 있습니다. 따라서 MyProperty는 _myPropertyVar를 포함합니다.
get과 set에서도 다른 로직을 적용할 수 있습니다. 다음 예제와 같이 보입니다.
private int _myPropertyVar; public int MyProperty { get { return _myPropertyVar / 2; } set { if (value > 100) _myPropertyVar = 100; else _myPropertyVar = value; ; } }
C#에서30.0부터, get 또는 set에서 특정 로직을 적용하지 않고자 할 때 손쉽게 속성 선언을 할 수 있습니다.
다음은 자동 구현 속성의 예제입니다:
public int MyAutoImplementedProperty { get; set; }
위의 속성 예제에는 프라이빗 리젠서 필드가 포함되어 있지 않습니다. 지원 필드는 컴파일러가 자동으로 생성합니다. 자동화된 속성을 사용하여 클래스의 일반 속성처럼 사용할 수 있습니다. 속성 액세스어에서 다른 로직이 필요하지 않을 때, 자동으로 구현된 속성은 손쉽게 속성을 선언하는 데 사용됩니다.
네임스페이스는 관련 클래스와 네임스페이스가 포함된 컨테이너입니다. 네임스페이스는 네임스페이스 내의 클래스에 독특한 이름을 제공하기도 합니다. 네임스페이스와 클래스는 점(.)를 사용하여 표현됩니다.
C#에서는 namespace 키워드를 사용하여 네임스페이스를 정의할 수 있습니다.
namespace CSharpTutorials { class MyClass { } }
위의 예제에서 MyClass의 완전한 클래스 이름은 CSharpTutorials.MyClass입니다.
네임스페이스는 다른 네임스페이스를 포함할 수 있습니다. 내부 네임스페이스는 점(.)로 구분할 수 있습니다.
namespace CSharpTutorials.Examples { class MyClassExample { } }
위의 예제에서 MyClassExample의 완전한 클래스 이름은 CSharpTutorials.Examples.MyClassExample입니다.