C#中的静态常量(const)和动态常量(static和readonly)用法和区别

<p>C#拥有两种不同的常量:静态常量(compile-time constants)和动态常量(runtime constants)。它们有不同的特性,错误的使用不仅会损失效率,还可能造成错误。相比之下,静态常量在速度上会稍稍快一些,但是灵活性却比动态常量差很多。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>//静态常量(隐式是静态的)
public const int compiletimeConstant = 1;
//动态常量
public static readonly runtimeConstant = 1;</p><p>      静态常量在编译时会将其替换为所对应的值,也就是说下面这2句话通过编译器编译后产生的IL是一样的。</p><p>//通过编译后二者会被翻译成相同的中间语言
int myNum = compiletimeConstant;
int myNum = 1;</p><p>      动态常量的值是在运行时获得的。IL中将其标为只读常量,而不是用常量的值代替。</p><p>      静态常量只能被声明为简单的数据类型(内建的int和浮点型)、枚举或字符串。下面的程序段是通不过编译的。你不能用new关键字初始化一个静态常量,即便是对一个值类型来说。</p><p>//这样是错误的
public const DateTime myDateTime = new DateTime(2006,9,1,0,0,0);
//这样是可以的
public static readonly DateTime myDateTime = new DateTime(2006,9,1,0,0,0);</p><p>      只读数据也是常量的一种,它们不能在构造器初始化之后被修改。但是它同静态常量不同,它的值是在运行时才被指派的,因此就会获得更大的灵活性。动态常量可以是任意的数据类型。</p><p>      二者最大的差别在于:静态常量在编译时会将其换为对应的值,这就意味着对于不同的程序集来说,当你改变静态常量的时候需要将其重新编译,否则常量的值不会发生变化,可能引发潜在的问题,而动态常量就不会有这种情况。</p><p> </p><p>     用const定义的常量(隐式是静态的),需要像访问静态成员那样去访问const定义的常量,而用对象的成员方式去访问会出编译错误。 声明的同时要设置常量值。
     从另一方面来说,如果你的确要声明一些从不改变且处处唯一的常量,例如钩子函数SetWindowsHookEx的idHook参数或序列化时的版本等,就应该使用静态常量。但是用到这样的常量的机会不多。一般来说我们应该使用灵活性更高的动态常量。</p><p>               静态常量            动态常量

内存消耗       无                  因为要保存常量 有消耗

初始化         很少的简单类型,    任意类型,可以在类构造函数中赋值
               不能new,必须在
               声明同时赋值

何时发挥作用   编译时进行替换       相当于类中的数据成员</p>

阅读剩余部分 -

WIN7如何去掉桌面的"库"的图标

<html><head> <title></title></head><body><p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);"><span style="color: rgb(51, 51, 51);">去掉库的方法:
按WIN+R组合键, 输入 gpedit.msc  ,打开组策略窗口,在窗口左边 点击 用户配置 -- 管理模板 -- 开始菜单和任务栏,然后就在右边找到 强制经典开始菜单 选项,双击进行编辑,</span></p><p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);"><span style="color: rgb(51, 51, 51);">选中 未配置 或者是 已禁用,然后确定。这时刷新桌面看看,应该 库 文件夹图标就在桌面上消失了</span></p></body></html>

什么是 MVC 模式?

<p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);"><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">MVC</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。</span></p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);">
<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">MVC 由 Trygve Reenskaug 提出,最早被应用在 SmallTalk-80 环境中。</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">模型—视图—控制器模式</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:</span></p><ul style="list-style-position: outside; list-style-image: initial; margin: 0px 0px 0px 14px; padding: 0px; font-size: 14px; text-align: justify; background-color: rgb(255, 255, 255); line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68);"> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">控制器 - 程序员编写程序应有的功能(实现算法等等)</li> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">视图 - 界面设计人员进行图形界面设计</li> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">模型 - 数据库专家进行数据管理和数据库设计</li></ul><p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);">
ModelViewControllerDiagramZh.png 

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">模型(Model)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">“数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权利,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。</span>

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">视图(View)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);"> 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。</span>

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">控制器(Controller)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);"> 控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。</span></p>

阅读剩余部分 -

关于flex学习笔记 (一)

先奉献上一个API的地址 .会经常用到的东西

http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/index.htm

然后用到一个案例软件
http://www.adobe.com/devnet/flex/tourdeflex.html

1.Application标签中有三个事件

initialize,creationComplete,applicationComplete(只用Application才有的事件)

creationComplete 和 applicationComplete有什么区别:

  • creationComplete先执行完
  • creationComplete是 Application实例完成后就执行的函数
  • applicationComplete 是整个 Application 所有的东西都实例完成后再执行的函数
  • Flex程序启动事件的顺序initialize、creationComplete、applicationComplete

阅读剩余部分 -

Axure RP 6.5中文汉化包 v6.5

Axure6.5正式版推出了,大大改善了用户体验以及修复了很多6.0上的bug。

而今天大家期待已久的汉化包也终于来了。Axure中文网发布的这个版本是在网友best919发布的基础上进行的优化的。后期本站还会继续优化词条。不断更新。这个语言包是开源的,你自己也可以修改。请放心使用。

另外这个语言包也同样适用于Axure6.0版本。

使用方法:

Windows版本的汉化方法:

先关闭Axure RP,然后打开Axure的安装目录,

一般是像这样
C:\Program Files\Axure\Axure RP Pro 6.5\

然后把lang文件夹复制到该目录下即可。

Mac下6.0的汉化方法:

在应用程序文件夹里找到Axure RP Pro 6.app程序,

然后右键选择“显示包内容”,

然后依次打开Contents/Resources文件夹,

然后把lang文件夹复制到该目录下即可。

MAC下可以用来汉化axure6.0,但是axure6.5的汉化并不生效。

下载地址

随机文章

最近回复

分类

其它

友情连接

推广链接