C# 学习 乱解读 属性 Attribute

资料:

Attribute 类-

Attribute 类 (System) | Microsoft Docs

C#中Attribute的应用_阿拉丁博客-CSDN博客

看了好几篇博文,胡乱解读下。

1 Atrribute是个类,有n中方法,n中继承(废话)

2 Atrribute类施加在 类/成员/方法 上

[Hello("这是个啥?")]
class AnimalTypeTestClass {
    [AnimalType(Animal.Dog)]
    public void DogMethod() {}

    [AnimalType(Animal.Cat)]
    public void CatMethod() {}

    [AnimalType(Animal.Bird)]
    public void BirdMethod() {}
}

3 施加属性类时,属性类比如已经实例化了。

如上面的   

class AnimalTypeTestClass。虽然只是类定义。单我们已经知道,这个类有个
[Hello("这是个啥?")]属性,类里面的方法 DogMethod,有个[AnimalType(Animal.Dog)]属性。这个属性是有具体值的,是实例化了的。

4
属性类有啥用
对应定义了的属性。就等同于int i=0;一样,后面如果不用i 那么没啥鸟用。所以定义了属性,后面要用才有意义。
我理解的有两种用法,1 系统用 2 自用
4.1 (系统用)Attribute作为编译器的指令
  系统用,定义属性后,系统自会使用他,我们就不管了。

在C#中存在着一定数量的编译器指令,如:#define DEBUG, #undefine DEBUG, #if等。这些指令专属于C#,而且在数量上是固定的。而Attribute用作编译器指令则不受数量限制。比如下面的三个Attribute:

Conditional:起条件编译的作用,只有满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用。
DllImport:用来标记非.NET的函数,表明该方法在一个外部的DLL中定义。
Obsolete:这个属性用来标记当前的方法已经被废弃,不再使用了。


4.2 自用
自用玩的比较多的是json转换...
不管怎么施加Attribute,总是有其他的地方要用到。
那么就要想办法取出属性。
比如 祖传代码
class a{
string str1;
string str2;
string str3;
}有个需求要转换为json是不是很抓虾
搞个属性...



posted @ 2021-10-03 15:38  点内特学习资料自用  阅读(64)  评论(0)    收藏  举报