.net开发中两个“属性”引起的歧异

简介:   对于property和attribute这两个名词都叫“属性”的问题,来源于国内it书籍翻译界的疏忽。   其实它们来源于两个不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念。

  对于property和attribute这两个名词都叫“属性”的问题,来源于国内it书籍翻译界的疏忽。

  其实它们来源于两个不同的领,attribute属于OOA/OOD的概念,而property属于编程语言中的概念。下面我们来说明它们的异同。

  Attribute

  Attributes是Microsoft .NET Framework文件的元数据,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。

  Property

  属性是面向对象编程的基本概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。关于属性的概念,不是本文的重点,而且相信大部分的技术人员应该对属性有清晰的概念。以下是简单的属性

  区别

  可以说两者没有可比性,只不过我们国家的语言特点才引起的歧异,其实只要记住Attributes是派生于System,Attributes类之下,它的主要作用是描述,比如在某一个自定义控件中的“属性”就是指Attribute,

  如

  [DllImport("User32.dll")]

  Attribute也有很多系统的“默认”属性,见下表

  预定义的属性 有效目标 说明

  AttributeUsage Class 指定另一个属性类的有效使用方式

  CLSCompliant 全部 指出程序元素是否与CLS兼容

  Conditional Method 指出如果没有定义相关联的字符串,编译器就可以忽略对这个方法的任何调用

  DllImport Method 指定包含外部方法的实现的DLL位置

  STAThread Method(Main) 指出程序的默认线程模型为STA

  MTAThread Method(Main) 指出程序的默认模型为多线程(MTA)

  Obsolete 除了Assembly、Module、Parameter和Return 将一个元素标示为不可用,通知用户此元素将被从未来的产品

  ParamArray Parameter 允许单个参数被隐式地当作params(数组)参数对待

  Serializable Class、Struct、enum、delegate 指定这种类型的所有公共和私有字段可以被串行化

  NonSerialized Field 应用于被标示为可串行化的类的字段,指出这些字段将不可被串行化

  StructLayout Class、struct 指定类或结构的数据布局的性质,比如Auto、Explicit或sequential

  ThreadStatic Field(静态) 实现线程局部存储(TLS)。不能跨多个线程共享给定的静态字段,每个线程拥有这个静态字段的副本

  而Property是指编程过程中的字段,也即类的成员。

  如:

  

      private int hour; //定义私有变量表示"小时",外部是访问不到的.}

  public int Hour// 定义Hour程序接口

  {

  set { hour=value; }

  get { return hour; }

  }

目录
相关文章
|
9月前
|
人工智能 芯片
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
|
7月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
278 0
|
11月前
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
192 9
|
11月前
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
167 8
|
11月前
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
166 7
|
11月前
|
网络协议 C#
基于.NET WinForm开发的一款硬件及协议通讯工具
基于.NET WinForm开发的一款硬件及协议通讯工具
128 7
|
11月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
321 5
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
433 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
226 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
258 0

热门文章

最新文章