typeof演算:typeof演算子は、のためのSystem.Typeオブジェクトを取得するために使用される タイプ。
オペレータは、特定のタイプ達成するため のSystem.Typeの オブジェクトを。
T = typeof演算(int)を入力します。
メソッドGetTypeは:現在のインスタンスのTypeを取得します。
現在のインスタンスの種類を取得する方法。
私は10を= int型。
Console.WriteLineを(i.GetType())。
違い:
- typeof演算は、()演算子とメソッドGetTypeあります
- (初期化後)と呼ばれることができるようにするので、唯一のインスタンスの確立後のベースクラスのSystem.ObjectのメソッドGetType()メソッド
- typeof演算()だけint型、文字列、文字列、カスタム型パラメータ、および例することはできません
- メソッドGetType()とtypeof演算()は、両方のSystem.Typeへの参照を返します。
TypeOf関数()およびメソッドGetType()の違い:
(1)TypeOf関数():タイプのクラスを取得します。
(2)メソッドGetType():タイプのクラスの例を与えるために
抽象的または仮想、オーバーライド:触媒は前の方法は、親クラスでこのメソッドをオーバーライド
メソッドGetType()は、現在のインスタンスののSystem.Typeを取得します。
2つのクラスがあります:学生とStudentDTOは次のとおりです。
Studentクラス::
パブリッククラス学生
{
パブリック学生()
{
}
パブリック仮想ストリングイド{GET。セットする; }
パブリック仮想列StudentNo {得ます。セットする; }
パブリック仮想列名前{取得します。セットする; }
パブリック仮想列CLASSID {得ます。セットする; }
パブリック仮想列ProfessionId {得ます。セットする; }
パブリック仮想列CollegeId {得ます。セットする; }
パブリック仮想int型の電話{取得します。セットする; }
パブリック仮想int型のセックス{取得します。セットする; }
パブリック仮想列アドレス{GET。セットする; }
}
StudentDTOカテゴリ:
パブリッククラスStudentDTO
{
パブリックStudentDTO()
{
}
パブリック仮想ストリングイド{GET。セットする; }
パブリック仮想列StudentNo {得ます。セットする; }
パブリック仮想列名前{取得します。セットする; }
パブリック仮想列CLASSID {得ます。セットする; }
パブリック仮想列ProfessionId {得ます。セットする; }
パブリック仮想列CollegeId {得ます。セットする; }
パブリック仮想int型の電話{取得します。セットする; }
パブリック仮想int型のセックス{取得します。セットする; }
パブリック仮想int型TeacherId {取得します。セットする; }
}
今学生を作成します。
学生の学生=新学生();
student.Id = Guid.NewGuid()toString()を。
student.Name = "张三"。
student.StudentNo = "T001"。
student.Phone = 10086;
student.Sex = 1。
student.CollegeId = Guid.NewGuid()toString()を。
student.ClassId = Guid.NewGuid()toString()を。
student.ProfessionId = Guid.NewGuid()toString()を。
student.Address = "福建"。
今DTOクラスStudentDTOの学生とStudentDTOアサイン情報の学生を作成し、一般的に使用される方法は次のとおりです。
StudentDTO studentDTO =新しいStudentDTO();
studentDTO.Id = student.Id。
studentDTO.Name = student.Name。
studentDTO.StudentNo = student.StudentNo。
studentDTO.Phone = student.Phone。
studentDTO.Sex = student.Sex。
studentDTO.CollegeId = student.CollegeId。
studentDTO.ClassId = student.ClassId。
studentDTO.ProfessionId = student.ProfessionId。
使用メソッドGetType()を実現することができます。
foreachの(。student.GetTypeにおけるVAR項目( )GetPropertiesの())// 戻り、全てのパブリックプロパティ学生
{
VAR値= item.GetValue(学生、NULL); //返すプロパティ値
VAR setobj = studentDTO.GetType()。 GetPropertyメソッド(item.Name);指定された検索属性名を持つ//共通属性
IF(= NULL値setObj = NULL &&!)
{
setobj.SetValue(studentDTO、値、NULL);
}
}
このルックスアップに非常に良い記録を持つ、より簡潔なコード......ああ、ちょうど個人的な感情というメソッドGetType()メソッド.......
多型、メソッドGetType()はなく通常どおりより、オブジェクトの種類に応じて異なるコードを実行することを可能にする有用な方法である場合、同じコードは、すべてのオブジェクトに対して実行され、
関数型パラメータのオブジェクトを受け入れる場合、例えば、いくつかの面で行うことができる(組み合わせgetypeで、追加のタスクをオブジェクト)とtypeof演算()は、次のように比較することができます。
もし(myobj.GetType()== typeof演算(MyComplexClass))
{
// ....
}