CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C#里的Attribute是干什么的?

楼主zero8223(Opec.Net)2002-07-16 20:54:04 在 .NET技术 / C# 提问

就是[]里的,书上说的不明白,我看不懂:( 问题点数:20、回复次数:11Top

1 楼zero8223(Opec.Net)回复于 2002-07-16 21:25:31 得分 0

?Top

2 楼BugBuilder(啪啪)回复于 2002-07-16 22:40:46 得分 0

你的脸上有麻子  
   
  这就是你的脸的AttributeTop

3 楼zero8223(Opec.Net)回复于 2002-07-16 22:54:17 得分 0

讲个实例行吗?  
  Top

4 楼corex(凡人核心)回复于 2002-07-16 23:35:23 得分 0

Attribute是他所修饰的方法或成员或类的附加属性。简单说来,DOTNET运行时利用“反射”机制可以得知他们的各种属性,因而作出某种动作。  
  比如在创建一个web   service时,加上[WebMethod],运行时就知道他是一个web   service,因为会爆露并输出这个web   service.  
  其实这根以往的语言的函数修饰符和编译器选项大同小异,不同的是DOTNET是在运行时搞掂的,以往是在编译时搞掂的。Top

5 楼zero8223(Opec.Net)回复于 2002-07-17 03:40:26 得分 0

那么这个属性能用来干吗?  
  比如我定义了   [FuckMethod]  
                    public   void   Fuck()  
                        {  
                              Console.Writeln("Fuck~~~");  
                        }  
  那么这个属性有什么用吗?能帮助我干什么呢?是不是和注释一样?  
  注释是给人看得,而属性是给机器看得???  
  请赐教!Top

6 楼niwalker()回复于 2002-07-17 05:49:38 得分 0

Attribute是一个类,它在.NET中的地位非常重要:  
  Attribute基本上是一个应用于代码中某个项目(例如方法和类)的标记,或者是方法的一个参数,它提供了该项目的额外信息。  
  要给一个项目应用Attribute,应在该项目定义前面的方括号中提供Attribute名。某些Attribute带有参数,这些参数应紧放在Attribute名后面的圆括号中。  
  从基本的一层来看,把Attribute应用到项目上,就是把该项目的额外信息放在编译好的装配件中,在这个装配件中,这些额外信息可以用在文档说明中作解释性的工作(使用反射的技术,也可以编写C#代码访问这些信息)。自己定制的任何Attribute都可以这么做。但是,在基类中定义的许多Attribute都要由C#编译器显式标识。编译器会对这些Attribute执行某些操作,这些操作可能影响到生成的代码,  
  定制Attribute  
  Attribute的结构也允许用户在源代码中定义自己的Attribute。显然,如果这么做,这些Attribute就不会影响编译过程,因为编译器不能识别它们,但这些Attribute可以在它编译好的装配件中用作元数据,这些元数据在文档说明中非常有用。但是,把这个想法付诸实践的是使用System.Reflection名称空间中的类,代码可以在运行时读取这些元数据,即定制Attribute可以直接影响代码运行的方式。  
  如果应用程序读写数据到数据库中,就可以使用定制Attribute,把了和属性标记为对应的数据库表和列。然后在运行是从装配件中读取这些Attribute,是程序可以自动从数据库的相应位置检索和写入数据,无需为每个表或列编写特定的逻辑。  
   
  以上文字引自《C#高级编程》一书。  
   
  我正在写一篇Attribute的使用,还没完成,如果大家有兴趣的话,敬请关注。  
  Top

7 楼corex(凡人核心)回复于 2002-07-17 08:33:44 得分 0

zero8223(zero8223)   :  
  你使用了一个FuckMethod,就表明你一定是定义了FuckMethodAttribute类,那个利用System.Reflection名字空间里的类,你可以在运行时间取得这个类实例,那么就可以根据这个FuckMethodAttribute类实例做出某些你需要的动作。说得够简单了吧?Top

8 楼cnnjyeziyin(夜紫吟)回复于 2002-07-17 08:34:22 得分 0

Attribute的中文意思是属性,它是一种类。也被称为类的属性成员。它与我们用的字段成员(也就是在C++中的数据成员)不同的是:访问字段成员实际上是对变量的访问,而属性成员在类的对象中是不以变量的形式出现的,它是函数成员的一种。虽然可以象操作变量一样操作一个属性成员,但是在属性成员内部需要向外界提供某个表达式的值,或者接受外界   的值以便修改某个字段成员。我们一般可以这么使用Attribute:  
  class   Circle  
  {  
      protected   int   nColor;  
      public   int   Color  
          {  
              get  
                    {  
                        return   nColor;  
                      }  
              set  
                    {  
                        nColor=value;  
                    }  
            }  
  }  
  这样可以很好的保证类的封闭性。我们可以通过共有的函数来访问类中的私有或保护的数据成员。Top

9 楼Hogwarts([微软]S(u)ddenly dis@ppeared...)回复于 2002-07-17 11:13:16 得分 20

To   zero8223:  
   
  关于C#中的Attribute,您可以参考MSDN中的"Extending   Metadata   Using   Attributes"。这篇文章讲的非常详细,而且附带了大量的例子代码并有说明,其中还以一个DeveloperAttribute为例讲述了如何自定义Attribute和如何使用自定义的Attribute。  
   
  其实,Attribute并不是C#中的一个新概念,以前在VC++中已经有了。如果对VC++中的Attribute有兴趣,可以参考MSDN中"Attributed   Programming"一文,地址是http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcwlkCustomAttributesTutorial.asp  
   
  另外,关于cnnjyeziyin提到的内容,有三个名词在C#中是容易产生迷惑的:Fields,   Attributes,   Properties。这三个名词的中文翻译都称作“属性”,但还是有所区分的:  
   
  [Serializable]         //Attributes  
  class   Circle{  
  int   _radius;         //Fields  
   
  int   radius{  
  get{   return   _radius;   }  
  set{   if(value>=0)   _radius=value;}  
  }     //Properties  
  }  
   
   
  Hogwarts   -   S(u)ddenly   dis@ppeared...  
  -    
  本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。      
  为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。      
   
   
   
  Top

10 楼Hogwarts([微软]S(u)ddenly dis@ppeared...)回复于 2002-07-17 11:17:56 得分 0

补充一下,上面提到的MSDN中讲述C#中的Attribute的文章"Extending   Metadata   Using   Attributes"的地址是http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconextendingmetadatausingattributes.asp  
   
   
  Hogwarts   -   S(u)ddenly   dis@ppeared...  
  -    
  本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。Top

11 楼dreammaster(天涯)回复于 2002-07-17 11:47:04 得分 0

ms-help://MS.NETFrameworkSDK.CHS/csref/html/vcwlkattributestutorial.htm  
   
  Look   this.Top

相关问题

  • C++能干什么?
  • 我能用c干什么?
  • C++之后干什么?
  • c#能干什么,不能干什么,给个意见
  • C++到底能干什么?(100分)!!!
  • 请问STL是在C++里是干什么用的,有什么应用?有没有前途?
  • crystal2000(爱干什么就干什么) 里面有请
  • 请问C:\WINDOWS\SYSTEM\SysTray.Exe这个东东 是干什么的?
  • c#中的HashCode到底是干什么的。
  • 在C++中的拷贝构造函数是干什么用的?

关键词

  • c#
  • vc++
  • 属性
  • 编译器
  • 代码
  • 字段
  • 函数
  • 数据
  • 项目
  • 数据库

得分解答快速导航

  • 帖主:zero8223
  • Hogwarts

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo