关闭

[STAThread] 这个是什么意思? 是个什么用法?

2319人阅读 评论(0) 收藏 举报
[STAThread]   这个是什么意思?     是个什么用法?

下面的是什么意思?
[StructLayout(LayoutKind.Explicit)]

下面的[FieldOffset(0)]     这个是什么意思?
public   struct   IPHeader
{
[FieldOffset(0)]   public   byte   ip_verlen;   //I4位首部长度+4位IP版本号
[FieldOffset(1)]   public   byte   ip_tos;   //8位服务类型TOS
[FieldOffset(2)]   public   ushort   ip_totallength;   //16位数据包总长度(字节)
[FieldOffset(4)]   public   ushort   ip_id;   //16位标识
[FieldOffset(6)]   public   ushort   ip_offset;   //3位标志位
[FieldOffset(8)]   public   byte   ip_ttl;   //8位生存时间   TTL
[FieldOffset(9)]   public   byte   ip_protocol;   //8位协议(TCP,   UDP,   ICMP,   Etc.)
[FieldOffset(10)]   public   ushort   ip_checksum;   //16位IP首部校验和
[FieldOffset(12)]   public   uint   ip_srcaddr;   //32位源IP地址
[FieldOffset(16)]   public   uint   ip_destaddr;   //32位目的IP地址
}

 

在这里,[]代表特性(Attributers)也有译作属性的.在[]中的内容,本身也是一个类,是从System.Attribute派生的类,作用是用来对类型,成员进行注释,有了这个东东,你就可以在运行时通过反射(reflection)来获得这信息.在编译时,这些信息是编译在EXE文件里的,称为元数据,所以在C#中可以创建自我包含,自我描述的组件,而不是像从前的组件,需要在EXE文件之外,保存好多琐碎的信息.

以[STAThread]   为例,当在主函数前面加了这个属性后,CLR在加载这个程序时,就会知道,哦,这个程序主线程是单线程单元模式的线程,在使用RichTextBox之类的COM组件时,就会使用STA模式,否则,CLR就不知道该用哪一种单元模式,因为你没指定...

Attributes的用处很多,在实际中慢慢体会吧.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:466447次
    • 积分:6176
    • 等级:
    • 排名:第4163名
    • 原创:118篇
    • 转载:115篇
    • 译文:0篇
    • 评论:89条
    最新评论