C# 属性
属性は、実行時にプログラム内のさまざまな要素 (クラス、メソッド、構造体、列挙、コンポーネントなど) の動作情報を伝えるために使用される宣言タグです。属性を使用して、宣言的な情報をプログラムに追加できます。宣言タグは、適用される要素の前に置かれた角括弧 ([ ]) によって記述されます。
属性は、コンパイラ命令やコメント、説明、メソッド、クラス、その他の情報などのメタデータを追加するために使用されます。 .Net Framework は、定義済み属性とカスタム属性という 2 種類の属性を提供します。
属性を指定する (Attribute)
属性 (Attribute) を指定するための構文は次のとおりです。
[attribute(positional_parameters, name_parameter = value, ...)] element
属性 (Attribute) の名前と値は、適用される要素の前に角括弧内に配置して指定します。 Positional_parameters は必須の情報を指定し、name_parameter はオプションの情報を指定します。
定義済み属性 (属性)
.Net フレームワークには、次の 3 つの定義済み属性が用意されています。
AttributeUsage
Conditional
Obsolete
AttributeUsage
定義済み属性 AttributeUsage は、カスタム属性クラスの使用方法を説明します。機能を適用できる項目のタイプを指定します。
この機能を指定するための構文は次のとおりです:
[AttributeUsage( validon, AllowMultiple=allowmultiple, Inherited=inherited )]
ここで:
パラメータ validon は、機能を配置できる言語要素を指定します。これは列挙子 AttributeTargets の値の組み合わせです。デフォルト値は AttributeTargets.All です。
パラメータallowmultiple (オプション)は、機能のAllowMultipleプロパティにブール値を提供します。 true の場合、属性は多目的です。デフォルト値は false (1 回のみ使用) です。
継承されたパラメーター (オプション) は、この機能の Inherited プロパティのブール値を提供します。 true の場合、この属性は派生クラスによって継承できます。デフォルト値は false (継承されません) です。
例:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Feild | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
Conditional
この事前定義された属性は、その実行が先頭のプリプロセッサ識別子に依存する条件付きメソッドをマークします。
Debug や Trace などの指定された値に応じて、メソッド呼び出しの条件付きコンパイルが行われます。たとえば、コードのデバッグ時に変数の値を表示します。
この機能を指定する構文は次のとおりです:
[Conditional( conditionalSymbol )]
例:
[Conditional("DEBUG")]
次の例は、この機能を示しています:
#define DEBUG using System; using System.Diagnostics; public class Myclass { [Conditional("DEBUG")] public static void Message(string msg) { Console.WriteLine(msg); } } class Test { static void function1() { Myclass.Message("In Function 1."); function2(); } static void function2() { Myclass.Message("In Function 2."); } public static void Main() { Myclass.Message("In Main function."); function1(); Console.ReadKey(); } }
上記のコードをコンパイルして実行すると、次の結果が生成されます:
In Main function In Function 1 In Function 2
Obsolete
この事前定義された属性は、使用すべきではないプログラム エンティティをマークします。これにより、特定のターゲット要素を破棄するようにコンパイラーに指示できます。たとえば、クラスで新しいメソッドが使用されているが、古いメソッドをクラス内に保持したい場合は、古いメソッドの代わりに新しいメソッドを使用する必要があるというメッセージを表示して、そのメソッドを廃止としてマークできます。 )。
この機能を指定する構文は次のとおりです:
[Obsolete( message )] [Obsolete( message, iserror )]
ここで:
パラメータ メッセージは、プロジェクトが廃止された理由と代わりに何を使用するかを説明する文字列です。
パラメータ iserror はブール値です。この値が true の場合、コンパイラはこの項目の使用をエラーとして扱う必要があります。デフォルト値は false です (コンパイラは警告を生成します)。
次の例は、この機能を示しています:
using System; public class MyClass { [Obsolete("Don't use OldMethod, use NewMethod instead", true)] static void OldMethod() { Console.WriteLine("It is the old method"); } static void NewMethod() { Console.WriteLine("It is the new method"); } public static void Main() { OldMethod(); } }
このプログラムをコンパイルしようとすると、コンパイラは次のようなエラー メッセージを表示します:
Don't use OldMethod, use NewMethod instead
カスタム属性 (Attribute) を作成します。
.Net Framework では、カスタム属性 (Attribute) を作成できます。属性は、実行時に取得できる宣言情報を保存するために使用されます。この情報は、設計基準とアプリケーションのニーズに基づいて、任意のターゲット要素に関連付けることができます。
创建并使用自定义特性包含四个步骤:
声明自定义特性
构建自定义特性
在目标程序元素上应用自定义特性
通过反射访问特性
最后一个步骤包含编写一个简单的程序来读取元数据以便查找各种符号。元数据是用于描述其他数据的数据和信息。该程序应使用反射来在运行时访问特性。我们将在下一章详细讨论这点。
声明自定义特性
一个新的自定义特性应派生自 System.Attribute 类。例如:
// 一个自定义特性 BugFix 被赋给类及其成员 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute
在上面的代码中,我们已经声明了一个名为 DeBugInfo 的自定义特性。
构建自定义特性
让我们构建一个名为 DeBugInfo 的自定义特性,该特性将存储调试程序获得的信息。它存储下面的信息:
bug 的代码编号
辨认该 bug 的开发人员名字
最后一次审查该代码的日期
一个存储了开发人员标记的字符串消息
我们的 DeBugInfo 类将带有三个用于存储前三个信息的私有属性(property)和一个用于存储消息的公有属性(property)。所以 bug 编号、开发人员名字和审查日期将是 DeBugInfo 类的必需的定位( positional)参数,消息将是一个可选的命名(named)参数。
每个特性必须至少有一个构造函数。必需的定位( positional)参数应通过构造函数传递。下面的代码演示了 DeBugInfo 类:
// 一个自定义特性 BugFix 被赋给类及其成员 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute { private int bugNo; private string developer; private string lastReview; public string message; public DeBugInfo(int bg, string dev, string d) { this.bugNo = bg; this.developer = dev; this.lastReview = d; } public int BugNo { get { return bugNo; } } public string Developer { get { return developer; } } public string LastReview { get { return lastReview; } } public string Message { get { return message; } set { message = value; } } }
应用自定义特性
通过把特性放置在紧接着它的目标之前,来应用该特性:
[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")] [DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")] class Rectangle { // 成员变量 protected double length; protected double width; public Rectangle(double l, double w) { length = l; width = w; } [DeBugInfo(55, "Zara Ali", "19/10/2012", Message = "Return type mismatch")] public double GetArea() { return length * width; } [DeBugInfo(56, "Zara Ali", "19/10/2012")] public void Display() { Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); } }
以上就是【c#教程】C# 特性(Attribute)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#.NETは、その強力なエコシステムと豊富なサポートのため、マイクロサービスを構築するために人気のある選択肢です。 1)asp.netcoreを使用してRestfulapiを作成して、順序の作成とクエリを処理します。 2)GRPCを使用して、マイクロサービス間の効率的な通信を実現し、注文サービスを定義および実装します。 3)Dockerコンテナ化されたマイクロサービスを介して展開と管理を簡素化します。

C#および.NETのセキュリティベストプラクティスには、入力検証、出力エンコード、例外処理、認証と承認が含まれます。 1)正規表現または組み込みのメソッドを使用して入力を検証して、悪意のあるデータがシステムに入るのを防ぎます。 2)XSS攻撃を防ぐための出力エンコード、httputility.htmlencodeメソッドを使用します。 3)例外処理により、情報の漏れが回避され、エラーが記録されますが、詳細情報はユーザーに返されません。 4)ASP.Netidentityおよび請求に基づく許可を使用して、不正アクセスから申請を保護します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
