特性
2015-09-28 15:50
281 查看
4.1. 常用特性
常用特性,也就是.NET已经提供的固有特性,事实上在.NET框架中已经提供了丰富的固有特性由我们发挥,以下精选出我认为最常用、最典型的固有特性做以简单讨论,当然这只是我的一家之言,亦不足道。我想了解特性,还是从这里做为起点,从.NET提供的经典开始,或许是一种求知的捷径,希望能给大家以启示。
AttributeUsage
AttributeUsage特性用于控制如何应用自定义特性到目标元素。关于AttributeTargets、AllowMultiple、Inherited、ValidOn,请参阅示例说明和其他文档。我们已经做了相当的介绍和示例说明,我们还是在实践中自己体会更多吧。
Flags
以Flags特性来将枚举数值看作位标记,而非单独的数值,例如:
enum Animal
{
Dog = 0x0001,
Cat = 0x0002,
Duck = 0x0004,
Chicken = 0x0008
}
因此,以下实现就相当轻松,
Animal animals = Animal.Dog | Animal.Cat;
Console.WriteLine(animals.ToString());
请猜测结果是什么,答案是:"Dog, Cat"。如果没有Flags特别,这里的结果将是"3"。关于位标记,也将在本系列的后续章回中有所交代,在此只做以探讨止步。
DllImport
DllImport特性,可以让我们调用非托管代码,所以我们可以使用DllImport特性引入对Win32 API函数的调用,对于习惯了非托管代码的程序员来说,这一特性无疑是救命的稻草。
using System;
using System.Runtime.InteropServices;
namespace Anytao.net
{
class MainClass
{
[DllImport("User32.dll")]
public static extern int MessageBox(int hParent, string msg, string caption, int type);
static int Main()
{
return MessageBox(0, "How to use attribute in .NET", "Anytao_net", 0);
}
}
}
Serializable
Serializable特性表明了应用的元素可以被序列化(serializated),序列化和反序列化是另一个可以深入讨论的话题,在此我们只是提出概念,深入的研究有待以专门的主题来呈现,限于篇幅,此不赘述。
Conditional
Conditional特性,用于条件编译,在调试时使用。注意:Conditional不可应用于数据成员和属性。
还有其他的重要特性,包括:Description、DefaultValue、Category、ReadOnly、BrowerAble等,有时间可以深入研究。
常用特性,也就是.NET已经提供的固有特性,事实上在.NET框架中已经提供了丰富的固有特性由我们发挥,以下精选出我认为最常用、最典型的固有特性做以简单讨论,当然这只是我的一家之言,亦不足道。我想了解特性,还是从这里做为起点,从.NET提供的经典开始,或许是一种求知的捷径,希望能给大家以启示。
AttributeUsage
AttributeUsage特性用于控制如何应用自定义特性到目标元素。关于AttributeTargets、AllowMultiple、Inherited、ValidOn,请参阅示例说明和其他文档。我们已经做了相当的介绍和示例说明,我们还是在实践中自己体会更多吧。
Flags
以Flags特性来将枚举数值看作位标记,而非单独的数值,例如:
enum Animal
{
Dog = 0x0001,
Cat = 0x0002,
Duck = 0x0004,
Chicken = 0x0008
}
因此,以下实现就相当轻松,
Animal animals = Animal.Dog | Animal.Cat;
Console.WriteLine(animals.ToString());
请猜测结果是什么,答案是:"Dog, Cat"。如果没有Flags特别,这里的结果将是"3"。关于位标记,也将在本系列的后续章回中有所交代,在此只做以探讨止步。
DllImport
DllImport特性,可以让我们调用非托管代码,所以我们可以使用DllImport特性引入对Win32 API函数的调用,对于习惯了非托管代码的程序员来说,这一特性无疑是救命的稻草。
using System;
using System.Runtime.InteropServices;
namespace Anytao.net
{
class MainClass
{
[DllImport("User32.dll")]
public static extern int MessageBox(int hParent, string msg, string caption, int type);
static int Main()
{
return MessageBox(0, "How to use attribute in .NET", "Anytao_net", 0);
}
}
}
Serializable
Serializable特性表明了应用的元素可以被序列化(serializated),序列化和反序列化是另一个可以深入讨论的话题,在此我们只是提出概念,深入的研究有待以专门的主题来呈现,限于篇幅,此不赘述。
Conditional
Conditional特性,用于条件编译,在调试时使用。注意:Conditional不可应用于数据成员和属性。
还有其他的重要特性,包括:Description、DefaultValue、Category、ReadOnly、BrowerAble等,有时间可以深入研究。
相关文章推荐
- Time.deltaTime和Time.realtimeSinceStartup
- 20135210程涵 信息安全系统设计基础第二周学习总结
- iOS绘图系统UIKit与Core Graphics
- iOS绘图系统UIKit与Core Graphics
- 那些年我们一起写过的代码
- ios开发一些零碎的小知识(二)
- Android 数据存储
- QQ的账号登录及api操作
- 软件测试7到9章总结
- 由 基本数据型态转换成 String,由 String 转换成 数字的基本数据型态
- ADT18.0.0之后jar包(support-v4)管理源码的方法
- 百度在线笔试题-裁减网格纸
- C++11标准中常用到的各种算法汇总.
- Android BaseAdapter
- DB2 基本概念
- Apache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口
- IntelliJ IDEA的高效快捷键设置
- 二叉搜索树与双向链表
- HDU 5475 2015 ACM/ICPC Asia Regional Shanghai Online An easy problem(线段树)
- Android手机连接蓝牙打印机连接不上的问题