この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
プログラミング
›
.Net/C#
›
C# 匿名型学習日誌
眺める:
31087
|
答える:
0
[出典]
C# 匿名型学習日誌
[リンクをコピー]
クズども
掲載地 2020/10/16 17:41:04
|
|
|
|
複雑なメソッド、イベント、コンストラクタのような複雑なクラスを定義したくない場合、匿名型のカスタムデータ型->を動的に生成できます。
1. 匿名性の種類を定義する
匿名型を定義する際には、varキーワードとオブジェクトの初期化構文を使う必要があります。
var: コンパイラはコンパイル時に自動的に新しいクラス定義を生成します(C#コードではクラス名は見えません)。
初期化:コンパイラに新たに作成されたタイプに対してプライベートなバックグラウンドフィールドや(読み取り専用の)プロパティを作成するよう指示します。
パラメータを渡して匿名型を構築し、関連情報を印刷します
ログインが見えます。
コール:匿名型はハードコードを使って構築することも可能です
ログインが見えます。
2. 匿名型の内部表現
すべての匿名型は自動的にObjectから継承されるため、Carオブジェクトに対してToString、GetHashCode、Equalsを使えます。次のことを呼び出してみます:
ログインが見えます。
判定と結果:
ログインが見えます。
carオブジェクトのタイプは<>f__AnonymousType03(あなたのものは異なるかもしれません)、匿名型名はコンパイラに感知され、干渉できないCILコードです。
3. ToString() メソッドと GetHashCode() の実装。
1.ToString()
ログインが見えます。
2. GetHashCode()
各匿名型の変数を用いて、System.Collections.Generic.EqualityComparerの型入力としてハッシュ値を計算し、<T>2つの匿名型が同じ性質を持ち同じ値を与えられた場合にのみ同じハッシュ値を生成します。
4. 匿名型の等しい意味
等価(Equals)
ログインが見えます。
結果を分析する:
1. Equals():コンパイラはEquals()を上書きし、値の意味論(例:2つのオブジェクトの各データメンバーの値の記録)に基づいてオブジェクトが等しいかどうかを判定します。
2. == 演算子:匿名型は同等の演算子を過負荷にしないため(== , !=), == 参照を比較し、内容を比較しません。
3. GetType(): 同じアセンブリ内で同じ属性を持つ2つの匿名型を宣言すると、コンパイラは1つの匿名型の定義のみを生成するためです。
5. 匿名型を含む匿名型
ログインが見えます。
概要:
実際、特にLINQを使う際には匿名型の使用に注意し、匿名型の出現からといって強い型付けのクラスや構造の使用を諦めてはいけません。
実際、匿名型自体には多くの制限があります:
匿名タイプの名前はあなたがコントロールできません
匿名型はSystem.Objectを継承します
匿名型のフィールドや属性は常に読み取り専用です
匿名型はイベント、カスタムメソッド、カスタム演算子、カスタムリライトをサポートしません
匿名型は暗黙的に封印されています
匿名型のエンティティ作成はデフォルトのコンストラクタのみを使用します
関数を定義せずにエンティティの形状を素早く定義したい場合、匿名型を使えます。
先の:
SQL Serverのデータは挿入スクリプトとしてエクスポートされます
次に:
.net/C#は非匿名関数<>f__AnonymousType0メソッドを反映しています
関連記事
•
.NET/C# リフレクション属性は、null型で判断できます
•
TypeScript: 「value」というプロパティは「HTMLElement」型には存在しません
•
値型「System.Decimal」へのキャストは失敗しました...
•
弾力探索-マッピング場型
•
Elasticsearch:No handler for type [string] declared on field[XX]的解决办法
•
jsにおける基本型と参照型
•
SQL ServerにおけるText型とvarchar(max)型のデータ型には違いがあります
•
jQueryはjQueryオブジェクトのラベル型を取得します
•
Oracleはテーブル内のすべての列とそのデータ型をクエリします
•
C# int to string は3ビットごとにコンマを付けます
閲覧したセクション
ごみ箱
リソースの共有
技術チャット
レジャー灌漑
ジャワ
サーバー構成
安全な攻防
HTML/CSS/JavaScript
その他の番組編成
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com