(A)工法を用いて
コンストラクタもコンストラクタとして知られている;建設要件およびクラスの名前、この中にリサイクル新で正確に同じ時間のいわゆる法;ない構造が存在しない場合、システムが構築するためにデフォルト設定されます。
- オブジェクトが作成されると、最初のメンバー変数を初期化し、その後、コンストラクタを呼び出します。
- したがって、初期化処理の内容の設定で任意の所望で添加してもよいです。
- 工法を用いて、オブジェクトが初期化コードを簡略化することができます
実際にオブジェクトのコンストラクタメソッドを呼び出すオブジェクトをインスタンス化します。
コンストラクタは、使用コンストラクタのパラメータをオーバーロードできます
namespace Demo
{
/// <summary>
/// 学生类
/// </summary>
class Student
{
public Student()
{
this.StudentId = 1001;
this.StudentName = "guobaoyan";
}
public Student(int stuId, string stuName)
{
this.StudentId = stuId;
this.StudentName = stuName;
}
public int StudentId { get; set; }
public string StudentName { get; set; }
public int Age { get; set; }
}
}
namespace Demo
{
class Program
{
static void Main(string[] args)
{
Student objStudent = new Student();
Student objStudent1 = new Student(101, "guo");
Console.WriteLine(objStudent.StudentName);
Console.WriteLine(objStudent1.StudentName);
}
}
}
反復符号を避けるためにオーバーロードされた時には、この方法を使用することができます。
- 実行時には、最初のコンストラクタは、コロンの後に呼び出され実行されます。
コンストラクタの概要がありargを:
- タイプおよびオーダーパラメータも一貫して定義された仕様を必要とします。
- 簡単に最初の作業を完了するためにどのようにユーザーがオブジェクトを選択することができますコンストラクタの引数があります。
- 単一のユーザーのオブジェクト属性を初期化するために、トラブルを避けることができる方法のパラメータを使用して構造を有しています。
- ユーザーは、制約オブジェクトの初期化作業を作成したい場合、あなたは引数なしのコンストラクタを削除することができ、特定の属性を完了する必要があります。
概要(2)このキーワード
このキーワードを使用する場合、同じ名前とローカル変数のメンバー:
このキーワードは、現在のクラスのオブジェクトは、クラスのメンバ変数やメソッドにアクセスするために使用されることを示します。
要約(iii)の構築方法及びその方法の例
1)コンストラクタ
- オブジェクト、クラスのコンストラクタの少なくとも一つを初期化します。
- 新しい呼び出されたを作成するときに明示的に呼び出しにのみ使用することができません。
- コンストラクタは戻り値を持っていません。
- コンストラクタの名前はクラス名と同じでなければなりません。
2)方法の例
- 何が任意なしオブジェクト、クラスのインスタンスメソッドを表すために使用することができます。
- のみ明示的に呼び出す:オブジェクトは、メソッド名を命名;.
- 値を返すことができ、あなたはときにキーワードのボイドを使用する必要があります。
- メソッド名を命名することは有意義であることが、一般に「動詞+名詞」形、パスカル仕様を使用して命名されたクラス名と同じではありません。
(D)オブジェクト初期化子を使用して
オブジェクトはまた、作成時に初期化されているオブジェクトによって「属性の初期化」を行うことができます
3つの方法の比較:
- 最初の伝統的な方法であり、第二は、コンストラクタで、三番目はイニシャライザであります
類似点とオブジェクトコンストラクタの初期化との違い:
同じポイント:
- オブジェクトのプロパティの初期化完了することができます。
違い:
- コンストラクタメソッド(関数)が必須であり、オブジェクトの初期化は必須ではありません。
- 对象初始化器只能完成属性初始化;构造函数可以完成任何需要的初始化工作,如对象创建时读取文件等;
- 对象初始化器是 在创建对象的时候使用,而构造方法写在类里面;
- 对象初始化器只有在.NET 3.0版本以上才可以使用;构造方法在1.0版本就有;
(五)对象的销毁
对象创建时,在内存中创建;对象在内存中不断“生生死死”,具有生命周期;
对象在内存中的状态:
- 正在引用:程序正在使用的对象;
- 游离状态:没有引用的对象,已经使用完毕,但是依然占据空间;
游离状态的对象,会被垃圾回收机制(GC)清理
- .NET虚拟机特有的机制,自动运行,并检查对象的状态;
- 发现对象不再引用时,会释放其所占用的空间(销毁)
GC 的使用大大减轻了程序员手动释放对象的操作,且程序运行稳定;
使用using,调用Dispose()方法,可以立即调用GC,释放内存;
- 并不是所用的对象都可以使用using,只用当对象实现了IDispose接口之后,才能使用using;
在C++中,析构函数:当使用delete关键字删除对象的时候,析构函数会自动调用
- 托管运行环境下,对象的销毁由虚拟机负责,析构函数的用处不大;
(六)对象的数据类型
对象也是一种数据类型,即类类型;
对象是引用类型:实际上并没有创建一个新的内存空间,这两个实际上指向的是一个内存空间;将自己的内存地址赋给新的变量(类似c++ 中的指针)
(七)ref 和 out 关键字
1)ref 关键字
使用 ref 关键字可以将值类型按照引用方式进行传递;
注意:实际上我们通常使用的函数使用是形参,传入的参数是实参,这两个之间只是值的传递;形参的变化并不会引起实参的变化;
2)out 关键字
使用 out 关键字可以让方法有多个返回值;
注意:
- out 关键字其实也是使用引用方式传递;
- 实践开发不建议经常使用;
- 可以使用“字典集合”返回多个参数;
(八)类与对象的总结
1)深入理解封装:
- コンセプトやパッケージの機能:変更されたメンバー(フィールド、プロパティ、メソッド)クラス効果的に外部のプライベートデータとメソッドを防ぐために必要なプライベートまたはパブリック修飾子を使用して、使用している、我々はパッケージ」として、この特性を使用しました。 "
- パッケージは概念である:プロパティ、メソッドは、パッケージであり、クラスは、プロパティおよびメソッドのカプセル化であるクラスが特定のモジュールにパッケージ化されてもよいです。
- パッケージングは、より優れた知的財産権の手続きの安全と保護を確保することができます。
- パッケージは、オブジェクト指向、オブジェクト指向の三つの重要な特性の重要な特徴である:カプセル化、継承、多型;
2)表面のオブジェクト指向プログラミングタイプの利点
パッケージには、自分のニーズにもっと注意を払うように、開発者を可能にします:
- メソッドを実装するクラスの特定機能することを、他のクラスは完全にそれがどのように行われるか気にしないことができ、あなただけ呼び出すことができます。
- チーム開発では、著者のクラスは、完全に他の人がどのように使用するかを気にしないことができます。
クラス定義は、反復符号化を避けるために、繰り返し使用することができた後。
3)クラスビュー
処置:ビューを介して、クラスの組織構造を示しています。
注:すべてのクラスが自動的にオブジェクトクラスから継承しなければならないことを、.NETプラットフォームの状態。
ボックス化とアンボックス化の4)動作
開発は「梱包」と頻繁に梱包・開梱の操作は、プログラムのパフォーマンスに影響を与えることができ、「開梱」の使用を最小限に抑えます。
定義:
- Object型の変数の値を変換して「パッキング」と呼ばれ、オブジェクトの種類を変換処理の値タイプが「ボックス化解除」と呼ばれています。