関連するクラスの概念 - 少年UC#グラフィックチュートリアルの研究ノートを妊娠して以来

9370██成功した代理出産の包装袋•0226•138健康的なセックス代理███バッグ男の子をパック:少年U█マイクロ・シグナル█を妊娠して以来

または関連する概念 - C#のノートを学ぶためのグラフィックチュートリアル

 

まず、いくつかの基本的な概念
分野:クラスに属する変数、つまりクラスのメンバ変数。
2.方法:関数は、メンバ関数は、クラス、そのクラスに属します。
メンバーの3例:クラスの各インスタンスは、これらのメンバーは、インスタンスメンバーを各クラスメンバの独自のコピーと呼ばれていました。フィールドの値を変更する例は、他の任意のインスタンスのメンバの値に影響を及ぼしません。
4.静的メンバー
静的メンバーは、クラスのメンバーに関連して、静的な記憶領域にロードされ、一度だけ作成され、クラス共有静的メンバのすべてのインスタンス。
静的フィールド例:

静的メンバ関数:クラスのインスタンスは、静的メソッドを呼び出すことはできません。静的メンバ関数は静的メンバーのみにアクセスすることができ、インスタンスメンバにアクセスすることはできません。
静的メンバクラス名の名称:外部アクセス静的メンバクラスから
注:
  何のクラスが存在しない場合でも、静的メンバの例。静的フィールドの初期化ステートメント場合は、クラスの静的メンバを使用する前に、フィールドを初期化しますが、必ずしもそうではないプログラムの実行の開始時には初期化されます。
5.メンバーの定数:クラス宣言文で定数。
定数は、静的メンバとして宣言することはできません。
クラスのインスタンスごとに静的な値が表示されるように一定のメンバーがアクセスできるクラスのインスタンスが存在しない場合でも、動作します。しかし、静的な量は、独自の保管場所を持っていながら、定数は、自分自身の保管場所を持っていますが、コンパイル時にコンパイラによって置き換えられません。
6.読み取り専用修飾子:利用可能な読み取り専用フィールド変更。その役割は、フィールド宣言constのに似ている値が設定されると変更することはできません。
constと読み取り専用フィールドフィールドの違いは何ですか?
(1)のconstフィールドは、フィールドの宣言文で開始することができ、かつ読み取り専用フィールドは、宣言文に加えて、フィールドに初期化することができるフィールドは静的な初期化は静的コンストラクタで行う必要がありますされている場合、それはまた、任意のクラスのコンストラクタで初期化することができます。
読み取り専用フィールドの値は、実行時に決定することができるが(2)CONSTフィールドの値は、コンパイル時に決定されなければなりません。
(3)動作は、メモリには格納場所が存在しない、静的定数フィールド常に。フィールドがインスタンスフィールドがあってもよく、静的読み取り専用フィールドであるが、メモリ記憶場所にあることができます。

 

第二の特性
データ・アイテム・クラス・インスタンス属性は、メンバーまたはクラスを表します。プロパティは、フィールドのように見える読み取りまたは書き込みを使用し、彼らは同じ構文です。
1の数の特性
(1)属性タイプは、クラスメンバーと命名され割り当てられて読み出すことができます。
(2)属性コードの実行を、データ記憶装置は、メモリを割り当てていません。
(3)静的として宣言されてもよいです。
(4)メソッドは2つのにアクセス装置と呼ばれる属性が
割り当てられた属性:<1> SETアクセサを。プロパティの同じタイプ、ボイドの戻り値の型指定された別の、暗黙の基準値、値の名前を、持っています。
プロパティの値:<2>は、アクセサを取得します。何のパラメータとは、プロパティの型と同じ型を返しません。
アクセサセットは、これらの2つのアクセサメソッドに加えて、任意の順序で取得するには、他の外因性の属性を許可していません。
アクセサセット、一つだけを定義し得るが、少なくとも定義します。
例:

2.属性の使用
現在読み出しまたは書き込みされ実行される動作に応じて特性が、暗黙のアクセッサを呼び出します。(アクセスを明示的に呼び出すことはできません)
。例:

3.プロパティの役割
包装分野で(1)は、プライベートフィールドとして宣言され、クラスのフィールドの外からのアクセスを制御するために、パブリックプロパティを宣言しています。このフィールドには、多くの場合、バッキングストア、などのバックアップフィールドに言及しました。
(2)バッキングフィールドを制御するために、読み取り専用または書き込み専用プロパティとして宣言することができる読み取り専用または書き込み専用です。のみgetアクセサプロパティは読み取り専用である、唯一のsetアクセサプロパティは書き込み専用プロパティです。
(3)アクセス属性は、フィールドの他の計算を実行してもよいです。
4.自動的に特性
プロパティはしばしばバッキングフィールドを関連付けられているので、C#のプロパティは、宣言文がフィールドをバックアップすることなく、属性できるように、自動的に(自動実装プロパティ)を得ました。コンパイラはあなたのための隠されたバッキングフィールドを作成し、フィールドにフックアップし、アクセサセットされます。 
次のように自動的に重要な属性は:
(1)は、バッキングフィールド宣言は、コンパイラは、属性タイプに応じてメモリを割り当てません。
(2)アクセス方式体を提供していない、彼らは単にセミコロンを宣言しなければなりません。単純なメモリの読み取りと同等のものを取得するには、単に書くと同等に設定。
(3)アクセス制御によって除き、またはバッキングフィールドにアクセスすることはできません。それは他の方法でアクセスすることはできませんので、その読み取り専用を達成すると、書き込み専用のプロパティは意味を持ちませんので、自動プロパティを使用した場合も、アクセスデバイスを読み書きする必要があります。

 

第三に、コンストラクタ
1名クラスのコンストラクタと同じ。
2.コンストラクタは値を返すことはできません。
3.明示的なインスタンスコンストラクタは、クラス宣言内に設けられていない場合、コンパイラは、パラメータを指定せずに暗黙のデフォルトコンストラクタ、デフォルトのコンストラクタを提供し、メソッド本体は空です。
4.限りコンストラクタを宣言して、コンパイラは、もはやデフォルトコンストラクタを提供しないでしょう。
コンストラクタはオーバーロードできます。
実施例6新しいクラスのコンストラクタの各インスタンスは、静的コンストラクタは、クラスレベルの項目を初期化する初期化します。典型的には、静的コンストラクタは、静磁場クラスを初期化します。
静的コンストラクタを明示的にプログラムで呼び出されていない7、システムが自動的にタイミングを呼び出し、それらを呼び出します:任意のクラスのインスタンスが作成される前に、クラスのすべての静的メンバーが前に参照されます。

 

第四に、インデクサ
インデックスが同様の特性で、getおよびsetアクセサのセットです。インデックスは、getを提供することで、クラスの複数のデータ・メンバーの属性を設定すると考えられています。
例宣言:

调用示例:
var emp = new Employee();
emp[0] = "Jet";
emp[1] = "Wu";
var lastname = emp[0];
1. 和属性一样,索引器不用分配内存来存储。
2. 和属性一样,索引器可以只有一个访问器,也可以两个都有。
3. 索引器总是实例成员,因此不能声明为static。
4. 和属性一样,实现get、set访问器的代码不必一定关联到某字段或属性。这段代码可以什么都不做,只要get访问器返回某个指定类型值即可
5. 索引器声明中,参数列表至少要声明一个参数。
6. 和属性一样,不能显示调用get、set访问器。取而代之,当索引器用在表达式中取值时,将自动调用get访问器。索引器被赋值时,自动调用set访问器。 
7. 索引器重载:一个类可以有任意多个参数列表不同的索引器。
8. 索引器的访问修改符:
(1)仅当成员(属性或索引器)既有get访问器也有set访问器时,其访问器才能有访问修饰符。
(2)虽然两个访问器都必须出现,但它们中只能有一个有访问修饰符。
(3)访问器的访问修饰符必须比成员的访问级别有更严格的限制性,即访问器的访问级别必须比成员的访问级别低。

 

五、分部类和分部方法
1. 分部类
类的声明可以分割成几个分部类的声明。
每个分部类的声明都含有一些类成员的声明。
类的分部类声明可以在同一文件中也可以在不同文件中
每个局部声明必须标为partial class,而不是class。
分部类声明看起来和普通类声明相同。
示例:

2. 分部方法
分部方法是声明在分部类中不同部分的方法。
分部方法分为两个部分:定义分部方法声明和实现分部方法声明。
1. 定义声明和实现声明的签名和返回类型必须匹配。签名和返回类型有如下特征:
<1>返回类型必须是void。
<2>签名不能包括访问修饰符,这使分部方法是隐式私有的。
<3>参数列表不能包含out参数。
<4>在定义声明和实现声明中都必须包含上下文关键字partial,直接放在关键字void前。
2. 可以有定义部分而没有实现部分。这种情况下,编译器把方法的声明以及方法内部任何对方法的调用都移除。不能只有实现部分而没有定义部分。
示例:

 

 
分类:  C#

一、一些基本概念
1. 字段:隶属于类的变量,即类的成员变量。
2. 方法:隶属于类的函数,即类的成员函数。
3. 实例成员:类的每个实例拥有自己的各个类成员的副本,这些成员称为实例成员。 改变一个实例字段的值不会影响任何其他实例成员中的值。
4. 静态成员
静态成员是与类相关的成员,被加载到静态存储区,且只被创建一次,类的所有实例共享静态成员。
静态字段示例:

静态函数成员:无需类实例就可以调用静态方法。静态函数成员不能访问实例成员,只能访问静态成员。
从类的外部访问静态成员:类名称.静态成员名称
注:
  静态成员即使没有类的实例也存在。如果静态字段有初始化语句,那么会在使用该类的任何静态成员之前初始化该字段,但没必要在程序执行的开始就初始化。
5. 成员常量:声明在类声明中的常量。
常量不能声明为静态成员。
成员常量表现得像静态值,对类的每个实例都是可见的,即使没有类的实例也可以访问。但是常量没有自己的存储位置,而是在编译时被编译器替换,而静态量是有自己的存储位置的。
6. readonly修饰符:字段可用readonly修饰。其作用类似于将字段声明为const,一旦值被设定就不能改变。
readonly字段与const字段有何区别?
(1)const字段只能在字段声明语句中初始化,而readonly字段除了可以在字段声明语句中初始化,还可以在类的任何构造函数中初始化,如果是static字段,初始化必须在静态构造函数中完成。
(2)const字段的值必须在编译时决定,而readonly字段值可以在运行时决定。
(3)const字段的行为总是静态的,在内存中没有存储位置。而readonly字段可以是静态字段,也可以是实例字段,而且在内存中是有存储位置的。

 

二、属性
属性代表类的实例或类中的一个数据项成员。使用属性看起来像写入或读取一个字段,它们语法相同。
1. 关于属性的一些特性
(1)属性是有类型的、命名的类成员,可以被赋值和读取。
(2)属性是执行代码,不为数据存储分配内存。
(3)可被声明为static。
(4)属性拥有两个称为访问器的方法:
<1>set访问器:为属性赋值。拥有一个单独的、隐式的值参,名称为value,与属性的类型相同,返回类型为void。
<2>get访问器:从属性取值。没有参数,返回类型与属性类型相同。
访问器set、get顺序任意,除这两个访问器外在属性上不允许有其他方法。
访问器set、get可以只定义其中一个,但至少要定义一个。
示例:

2. 属性的使用
属性根据当前执行的操作是写入还是读取,隐式调用访问器。(访问器不能被显式调用)
示例:

3. 属性的作用
(1)将字段声明为private以封装字段,并声明一个public属性来控制从类的外部对该字段的访问。这样的字段常被称为后备字段、后备存储。
(2)可以声明属性为只读或只写,从而控制后备字段为只读或只写。只有get访问器的属性为只读属性,只有set访问器的属性为只写属性。
(3)属性访问器可以对字段执行其他计算。
4. 自动实现属性
因为属性经常关联到后备字段,C#提供了自动实现属性(automatically implemented property),允许只声明属性而不声明后备字段。编译器为你创建隐藏的后备字段,并且字段挂接到get和set访问器上。 
自动实现属性的要点如下:
(1)不声明后备字段,编译器根据属性类型分配存储。
(2)不能提供访问器的方法体,它们必须被简单地声明为分号。get相当于简单的内存读,set相当于简单的写。
(3)除非通过访问器,否则不能访问后备字段。因为不能用其他方法访问,所以实现只读和只写属性没有意义,因此使用自动属性必须同时提供读写访问器。

 

三、构造函数
1. 构造函数的名称与类相同。
2. 构造函数不能有返回值。
3. 如果在类的声明中没有显式的提供实例构造函数,那么编译器会提供一个隐式的默认构造函数,默认构造函数没有参数,且方法体为空。
4. 只要声明了构造函数,编译器就不再提供默认构造函数。
5. 构造函数可以被重载。
6. 实例构造函数初始化类的每个新实例,静态构造函数初始化类级别的项。通常,静态构造函数初始化类的静态字段。
7. 静态构造函数不能在程序中显式调用,系统会自动调用它们,调用时机:类的任何实例被创建前;类的任何静态成员被引用前。

 

四、索引器
索引器是一组get和set访问器,与属性类似。可以认为,索引器是为类的多个数据成员提供了get、set属性。
声明示例:

调用示例:
var emp = new Employee();
emp[0] = "Jet";
emp[1] = "Wu";
var lastname = emp[0];
1. 和属性一样,索引器不用分配内存来存储。
2. 和属性一样,索引器可以只有一个访问器,也可以两个都有。
3. 索引器总是实例成员,因此不能声明为static。
4. 和属性一样,实现get、set访问器的代码不必一定关联到某字段或属性。这段代码可以什么都不做,只要get访问器返回某个指定类型值即可
5. 索引器声明中,参数列表至少要声明一个参数。
6. 和属性一样,不能显示调用get、set访问器。取而代之,当索引器用在表达式中取值时,将自动调用get访问器。索引器被赋值时,自动调用set访问器。 
7. 索引器重载:一个类可以有任意多个参数列表不同的索引器。
8. 索引器的访问修改符:
(1)仅当成员(属性或索引器)既有get访问器也有set访问器时,其访问器才能有访问修饰符。
(2)虽然两个访问器都必须出现,但它们中只能有一个有访问修饰符。
(3)访问器的访问修饰符必须比成员的访问级别有更严格的限制性,即访问器的访问级别必须比成员的访问级别低。

 

五、分部类和分部方法
1. 分部类
类的声明可以分割成几个分部类的声明。
每个分部类的声明都含有一些类成员的声明。
类的分部类声明可以在同一文件中也可以在不同文件中
每个局部声明必须标为partial class,而不是class。
分部类声明看起来和普通类声明相同。
示例:

2. 分部方法
分部方法是声明在分部类中不同部分的方法。
分部方法分为两个部分:定义分部方法声明和实现分部方法声明。
1. 定义声明和实现声明的签名和返回类型必须匹配。签名和返回类型有如下特征:
<1>返回类型必须是void。
<2>签名不能包括访问修饰符,这使分部方法是隐式私有的。
<3>参数列表不能包含out参数。
<4>在定义声明和实现声明中都必须包含上下文关键字partial,直接放在关键字void前。
2. 可以有定义部分而没有实现部分。这种情况下,编译器把方法的声明以及方法内部任何对方法的调用都移除。不能只有实现部分而没有定义部分。
示例:

 

おすすめ

転載: www.cnblogs.com/DENG012/p/10947741.html