C#属性とC#静的フィールドの違いは何ですか?

ヨンダファン

Microsoftの文書によると、

属性は、メタデータまたは宣言型情報をコードに関連付ける強力な方法を提供します。

静的メンバーは、クラスのインスタンスが作成されていない場合でも、クラスで呼び出すことができます。静的メンバーには、インスタンス名ではなく、常にクラス名でアクセスします。

しかし、私の理解によれば、属性と静的フィールドの両方が

  1. 実行時にアクセスできます
  2. オブジェクトではなく、クラスでバインドします。

では、それらの違いは何ですか?

オリヴィエ・ロジェ

定義

静的データフィールドまたはプロパティは、クラス定義の抽象化にカプセル化さた変数です

属性は装飾であり、パラメータであり、データ自体ではなく、クラスタイプ、またはメンバーフィールド、プロパティ、またはメソッドに追加されます。

属性自体は何もせず、データやコードに関しても何も表しません。これは、コードに追加された概念的なアーティファクトであり、何らかの方法でコードが動作を変更するために使用できます。

属性は、クラスのいくつかの動作を管理するためのデータとメソッドを含むことができるクラスです。

属性を使用すると、抽象化とカプセル化をさらに分離できます。

それらは、一般化を可能にしながら、設計をより良く洗練するだけでなく、コーディング時に動作を特殊化することを可能にします。

このクラスを検討してください。

public class LogFile
{
  static public List<LogFile> LogFiles { get; private set; }
}

これは、インスタンス化されたすべてのログファイルを含む静的リストです。

これはデータであり、変数であり、具体的で具体的なものであり、内部および外部のコードで直接使用できます。

属性の使用例を次に示します。

[LogFileStorage(LogFilePath.User)]
public class LogFile
{
}

これは、コードレベルでクラス定義に追加されたコードタグであり、再帰を使用しない限り変更できず、ログファイルマネージャークラスが一時フォルダーやユーザーのように保存パスを定義するために使用できます。 appフォルダーまたはランタイムで定義されたパス(定数またはデフォルト値とは異なる、切り離された方法で)。

したがって、この例では、ログファイルのsaveメソッドはクラス属性をチェックして、どこに保存するかを認識します。

属性を使用すると、コーダーは、定義するクラス、子クラス、および任意のクラスメンバーをパラメーター化できます。

古典的な例は、Serializable属性です。

https://docs.microsoft.com/dotnet/api/system.serializableattribute

チュートリアル

https://www.tutorialspoint.com/csharp/csharp_attributes.htm

https://docs.microsoft.com/dotnet/csharp/programming-guide/concepts/attributes/

https://docs.microsoft.com/dotnet/csharp/tutorials/attributes

https://www.tutorialspoint.com/csharp/csharp_encapsulation.htm

https://www.c-sharpcorner.com/UploadFile/mkagrahari/introduction-to-object-directiond-programming-concepts-in-C-Sharp/

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

静的変数と静的フィールドの実装の違いは何ですか?

分類Dev

最上位のウィンドウフォームの違いは何ですか?C#

分類Dev

C#のbool型とブール型の違いは何ですか

分類Dev

C#のbool型とブール型の違いは何ですか

分類Dev

C#のbool型とブール型の違いは何ですか

分類Dev

C#の「静的メソッド」とは何ですか?

分類Dev

フィールドと変数の違いは何ですか?

分類Dev

同期フィールドとReadWriteLocksの違いは何ですか?

分類Dev

C#のプリミティブの==とEquals()の違いは何ですか?

分類Dev

JavaとC#のintとIntegerの違いは何ですか?

分類Dev

C#のconstとreadonlyの違いは何ですか?

分類Dev

文字列とC#の文字列の違いは何ですか?

分類Dev

C#のstring [] []とstring [、]の違いは何ですか

分類Dev

C#のArrayとobject []の違いは何ですか?

分類Dev

C#の[Required]と[Required()]の違いは何ですか

分類Dev

C#:HttpStatusCodeのMovedPermanentlyとMovedの違いは何ですか

分類Dev

Java / C#静的クラスの主な違いは何ですか?

分類Dev

Django-モデルフィールドとモデル属性の違いは何ですか?

分類Dev

C#とJavaの主な違いは何ですか?

分類Dev

C#とJavaの主な違いは何ですか?

分類Dev

J#とC#の違いは何ですか

分類Dev

C#と.NETの違いは何ですか?

分類Dev

C# new 'Classname' と default('classname') の違いは何ですか

分類Dev

静的値型フィールドはC#のヒープにボックス化されていますか?

分類Dev

フィールドとプロパティの違いは何ですか?

分類Dev

メソッドとフィールドの違いは何ですか?

分類Dev

C#の[パラメータ]属性とは何ですか

分類Dev

CとC#またはJAVAのcharの違いは何ですか

分類Dev

内部/ローカル/匿名クラスに関して、JavaとC#の基本的な違いは何ですか?

Related 関連記事

  1. 1

    静的変数と静的フィールドの実装の違いは何ですか?

  2. 2

    最上位のウィンドウフォームの違いは何ですか?C#

  3. 3

    C#のbool型とブール型の違いは何ですか

  4. 4

    C#のbool型とブール型の違いは何ですか

  5. 5

    C#のbool型とブール型の違いは何ですか

  6. 6

    C#の「静的メソッド」とは何ですか?

  7. 7

    フィールドと変数の違いは何ですか?

  8. 8

    同期フィールドとReadWriteLocksの違いは何ですか?

  9. 9

    C#のプリミティブの==とEquals()の違いは何ですか?

  10. 10

    JavaとC#のintとIntegerの違いは何ですか?

  11. 11

    C#のconstとreadonlyの違いは何ですか?

  12. 12

    文字列とC#の文字列の違いは何ですか?

  13. 13

    C#のstring [] []とstring [、]の違いは何ですか

  14. 14

    C#のArrayとobject []の違いは何ですか?

  15. 15

    C#の[Required]と[Required()]の違いは何ですか

  16. 16

    C#:HttpStatusCodeのMovedPermanentlyとMovedの違いは何ですか

  17. 17

    Java / C#静的クラスの主な違いは何ですか?

  18. 18

    Django-モデルフィールドとモデル属性の違いは何ですか?

  19. 19

    C#とJavaの主な違いは何ですか?

  20. 20

    C#とJavaの主な違いは何ですか?

  21. 21

    J#とC#の違いは何ですか

  22. 22

    C#と.NETの違いは何ですか?

  23. 23

    C# new 'Classname' と default('classname') の違いは何ですか

  24. 24

    静的値型フィールドはC#のヒープにボックス化されていますか?

  25. 25

    フィールドとプロパティの違いは何ですか?

  26. 26

    メソッドとフィールドの違いは何ですか?

  27. 27

    C#の[パラメータ]属性とは何ですか

  28. 28

    CとC#またはJAVAのcharの違いは何ですか

  29. 29

    内部/ローカル/匿名クラスに関して、JavaとC#の基本的な違いは何ですか?

ホットタグ

アーカイブ