博文

C#属性解释 1(2008-08-26 01:33:00)

摘要:C# 语言的大多数都使得程序员者可以指定关于在程序中定义的实体的公开的消息。例如,一个类中的一个方法的可访问性,可以通过用方法修饰符public, protected, internal 和 private 对它进行修饰来指定。 C# 使得程序员可以创造声明信息的新的种类,来为各种程序实体指定声明信息,并且在运行时环境中找回属性信息。例如,一个框架也许定义了一个HelpAttribute 属性,它可以被放在例如类和方法的程序元素中来提供从程序元素到它们的文档的映射。 声明信息的新种类通过属性类(§17.1)的声明来定义,它可能有位置的和名称的参数 (§17.1.2)。声明信息使用属性(§17.2)来指定C# 程序,并且可以在运行时作为属性实例来检索 (§17.3)。 1.1 属性类 一个属性类的声明定义了一种可以放在声明中的新的属性。一个从抽象类System.Attribute 派生的类,不管是直接派生还是间接派生都是属性类。 一个属性类的声明要受下面的附加约束的影响: ·         一个非抽象属性类必须有公共的可访问性。 ·         所有其中的非抽象属性类为嵌套的类型必须有公共的可访问性。 ·         一个非抽象属性必须至少有一个公共构造函数。 一个属性类的每个公共构造函数的每个形式参数类型必须是属性参数类型 (§17.1.3)。 根据惯例,属性类被用一个后缀Attribute 修饰。一个属性的使用可以包括也可以忽略这个后缀。 1.1.1 AttributeUsage 属性 AttributeUsage 属性被用来描述一个属性类是否可以被使用。 AttributeUsage 属性有一个位置参数用来使一个属性类可以指定它可以被应用的声明的类型。例子 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
public class SimpleAttribute: System.Attrib......

阅读全文(3006) | 评论:0

C#异常解释(2008-08-26 01:31:00)

摘要:C# 中的表达式为处理系统级别和应用程序级别的错误条件,提供了一个构造的、统一的合类型安全的方法。C#中的异常机制与C++中的相当相似,但是有一些重要的不同之处: ·         在 C# 中,所有的异常必须用一个从System.Exception派生的类类型的实例表示。在C++中,任何类型的任何数值都可以用于表示异常。 ·         在C# 中,一个最后的块 (§错误!未找到引用源。) 可以被用来编写在正常指向和异常条件下都可以执行的中止代码。如果没有重复代码,那样的代码在C++中很难写。 ·         在 C#中,如溢出、被零除和空解除参照等系统级的异常会有被很好定义的异常类,并且应用程序级别错误条件等同。 1.1 异常的产生 异常可以用两种不同的方法抛出。 ·         一个throw 语句 (§错误!未找到引用源。) 会直接无条件地抛出一个异常。控制不会接触到紧跟在throw后面的语句。 ·         当操作符不能正常结束时,在某种特殊情况下,在C#语句和表达式执行的过程中产生的某种异常的条件产生一个异常。例如,一个整数除法操作(§错误!未找到引用源。)在分母为零时抛出一个System.DivideByZeroException 异常。§16.4 中给出了一个可以在这种方式下发生的各种异常的列表。 1.2 System.Exception 类 类System.Exception 似所有异常的基本类型。这个类有一些值得注意的属性,这些属性所有异常都有: ·         Message 是一个只读属性,它是一个只读属性,可以包含一个可以被人读的异常原因的描述。 ·      ......

阅读全文(3344) | 评论:0

汇编第一章 预备知识 数据的表示和类型(2008-08-25 14:04:00)

摘要: → 数据的表示和类型 课件章节 课件目录 第1章 预备知识 第2章 CPU资源和存储器 第3章 操作数的寻址方式 第4章 标识符和表达式 第5章 微机CPU的指令系统 第6章 程序的基本结构 第7章 子程序和库 第8章 输入输出和中断 第9章 宏 第10章 应用程序的设计 第11章 数值运算协处理器 第12章 汇编语言和C语言 1.2 数据的表示和类型 在用汇编语言进行程序设计时,程序员可以直接访问内存,对数据在存储器内的表示形式要有一个清晰的认识。下面,我们只简单介绍本课程所要用到的数据表示知识,为后面的学习作一点必要的准备。 有关“数据表示”的详细内容请参阅《计算机组成原理》中的相关章节。 1.2.1 数值数据的表示 (1)、二进制 在计算机内,数值是用二进制来表示的,每个二进制数按权相加就可得到其十进制数值。在书写二进制时,为了区别,在数据后面紧跟一个字母B。 二进制的一般表现形式为:bn-1…b1b0B,其代表数值:bn-12n-1+…+b121+b020。 数据的二进制表示形式简单、明了,但它书写起来比较长,所以,通常情况下,我们在程序中不直接用二进制来书写具体的数值,而改用八进制、十进制或十六进制。 (2)、八进制 八进制是一种二进制的变形,三位二进制可变为一位八进制,反之也然。八进制的表示元素是:0、1、…、7。在书写时,为了区别,在数据后面紧跟一个字母Q。如:1234Q、7654Q、54Q等都是八进制。 八进制数在程序中的使用频率不高。 (3)、十进制 十进制是我们最熟悉的一种数据表示形式,它的基本元素是:0、1、…、9。在书写时,为了区别,在数据后面紧跟一个字母D。在程序中经常用十进制来表示数据。 (4)、十六进制 十六进制是另一种二进制的变形,四位二进制可变为一位十六进制,反之也然。十六进制的基本元素是:0、1、…、9、A、B、…、F(字母小写也可以),其中:字母A、B、…、F依次代表10、11、…、15。 在书写时,为了区别,在数据后面紧跟一个字母H。当十六进制数的第一个字符是字母时,在第一个字符之前必须添加一个‘0’。如:100H、56EFH、0FFH、0ABCDH等都是十六进制数。 十六进制在程序中的使用频率很高。 (5)、数值进制的总结和相互转换 表1.1 各种进制及其字符表示......

阅读全文(1855) | 评论:2

第1章 预备知识(2008-08-25 13:38:00)

摘要:本章介绍汇编语言的一些基本概念,给出一些用汇编语言编程所需要的基本知识。 1.1 汇编语言的由来及其特点 1.1.1 机器语言 机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。 由于机器指令与CPU紧密相关,所以,不同种类的CPU所对应的机器指令也就不同,而且它们的指令系统往往相差很大。但对同一系列的CPU来说,为了满足各型号之间具有良好的兼容性,要做到:新一代CPU的指令系统必须包括先前同系列CPU的指令系统。只有这样,先前开发出来的各类程序在新一代CPU上才能正常运行。 机器语言是用来直接描述机器指令、使用机器指令的规则等。它是CPU能直接识别的唯一一种语言,也就是说,CPU能直接执行用机器语言描述的程序。 用机器语言编写程序是早期经过严格训练的专业技术人员的工作,普通的程序员一般难以胜任,而且用机器语言编写的程序不易读、出错率高、难以维护,也不能直观地反映用计算机解决问题的基本思路。 由于用机器语言编写程序有以上诸多的不便,现在几乎没有程序员这样编写程序了。 1.1.2 汇编语言 虽然用机器语言编写程序有很高的要求和许多不便,但编写出来的程序执行效率高,CPU严格按照程序员的要求去做,没有多余的额外操作。所以,在保留“程序执行效率高”的前提下,人们就开始着手研究一种能大大改善程序可读性的编程方法。 为了改善机器指令的可读性,选用了一些能反映机器指令功能的单词或词组来代表该机器指令,而不再关心机器指令的具体二进制编码。与此同时,也把CPU内部的各种资源符号化,使用该符号名也等于引用了该具体的物理资源。 如此一来,令人难懂的二进制机器指令就可以用通俗易懂的、具有一定含义的符号指令来表示了,于是,汇编语言就有了雏型。现在,我们称这些具有一定含义的符号为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。 汇编语言是汇编指令集、伪指令集和使用它们规则的统称。伪指令是在程序设计时所需要的一些辅助性说明指令,它不对应具体的机器指令,有关内容在以后的各章节中会有详细叙述,在此不展开介绍。 用汇编语言编写的程序称为汇编语言程序,或汇编语言源程序,在本教材中或特定的环境下......

阅读全文(1998) | 评论:0

JavaScript面向对象的支持--(3)(2008-08-24 22:50:00)

摘要:Qomolangma OpenProject v0.9
类别    :Rich Web Client
关键词  :JS OOP,JS Framwork, Rich Web Client,RIA,Web Component,
          DOM,DTHML,CSS,JavaScript,JScript 项目发起:aimingoo (aim@263.net)
项目团队:aimingoo, leon(pfzhou@gmail.com)
有贡献者:JingYu(zjy@cnpack.org)
================================================================================ 八、JavaScript面向对象的支持
~~~~~~~~~~~~~~~~~~
(续)
2. JavaScript面向对象的支持
--------
(续)  5). 使用instanceof关键字的运算
 ------
 在JavaScript中提供了instanceof关键字来检测实例的类型。这在前面讨
论它的“五重身份”时已经讲过。但instanceof的问题是,它总是列举整个
原型链以检测类型(关于原型继承的原理在“构造与析构”小节讲述),如:
//---------------------------------------------------------
// instanceof使用中的问题
//---------------------------------------------------------
function MyObject() {
  // ...
} function MyObject2() {
  // ...
}
MyObject2.prototype = new MyObject(); obj1 = new MyObject();
o......

阅读全文(1001) | 评论:0

JavaScript面向对象的支持--(2)(2008-08-24 22:49:00)

摘要:不是它检测属性是否存在的能力,因此在早期的代码中,很多可喜欢用“if (!obj.propName) {}” 这样的方式来检测propName是否是有效的属性。——很多时候,检测有效性比检测“是否存有该属性”更有实用性。因此这种情况下,in只是一个可选的、官方的方案。  in关键字的重要应用是高速字符串检索。尤其是在只需要判定“字符串是否存在”的情况下。例如10万个字符串,如果存储在数组中,那么检索效率将会极差。
//---------------------------------------------------------
// 使用对象来检索
//---------------------------------------------------------
function arrayToObject(arr) {
  for (var obj=new Object(), i=0, imax=arr.length; i<imax; i++) {
    obj[arr[i]]=null;
  }
  return obj;
} var
  arr = ['abc', 'def', 'ghi']; // more and more...
  obj = arrayToObject(arr); function valueInArray(v) {
  for (var i=0, imax=arr.length; i<imax; i++) {
    if (arr[i]==v) return true;
  }   return false;
} function valueInObject(v) {
  return v in obj;
}   这种使用关键字in的方法,也存在一些限制。例如只能查找字符串,而数组元素可以是任意值。另外,arrayToObject()也存在一些开销,这使得它不适合于频繁变动的查找集。最后,(我想你可能已经注意到了)使用对象来查找的时候并不能准......

阅读全文(1490) | 评论:0

JavaScript面向对象的支持--(1)(2008-08-24 22:48:00)

摘要:Qomolangma OpenProject v0.9
类别    :Rich Web Client
关键词  :JS OOP,JS Framwork, Rich Web Client,RIA,Web Component,
          DOM,DTHML,CSS,JavaScript,JScript 项目发起:aimingoo (aim@263.net)
项目团队:aimingoo, leon(pfzhou@gmail.com)
有贡献者:JingYu(zjy@cnpack.org)
================================================================================
八、JavaScript面向对象的支持
~~~~~~~~~~~~~~~~~~
很少有人对JavaScript的面向对象特性进行系统的分析。我希望接下来的文字让你了解到这
个语言最少为人知的一面。
1. JavaScript中的类型
--------
虽然JavaScript是一个基于对象的语言,但对象(Object)在JavaScript中不是第一型的。JS
是以函数(Function)为第一型的语言。这样说,不但是因为JS中的函数具有高级语言中的函
数的各种特性,而且也因为在JS中,Object也是由函数来实现的。——关于这一点,可以在
后文中“构造与析构”部分看到更进一步的说明。 JS中是弱类型的,他的内置类型简单而且清晰:
---------------------------------------------------------
undefined : 未定义
number    : 数字
boolean   : 布尔值
string    : 字符串
function  : 函数
object    : 对......

阅读全文(1389) | 评论:0

JavaScript教程--从入门到精通--(9)(2008-08-23 20:02:00)

摘要:用JavaScript实现更复杂的交互
  一、什么是框架
  框架Frames最主要功用是"分割"视窗,使每个"小视窗"能显示不同的HTM L文件,不同框架之间可以互动(interact),这就是说不同框架之间可以交换讯息与资料。例如:假设您开了两个frames,第一个frame可显示书的目录,第二个frame则显示章节的具体内容。
  框架可以将屏幕分割成不同的区域,每个区域有自己的URL,通过Frames[]数组对象来实现不同框架的访问。实际上框架对象本身也一类窗口,它继承了窗口对象的所有特征,并拥有所有的属性和方法。下面我们先看一下框架的例子。见图9-1所示。 图9-1 框架对象 <HTML>
<HEAD>
</HEAD>
<Frameset Rows="20%,80%">
<frame src="test9_1.html">
<Frameset Cols="50%,50%">
<frame src="test9_2.html">
<frame src="test9_3.html">
</Frameset>
</Frameset>
</HTML>
  以上HTML标识将屏幕分成三个框架。先将窗口分成以二行为单位的窗口,之后再按分成二个窗口。并在相应的框架中放入自己的HTML文档。
  通过[Framset ]告诉浏览器您要设置几个框架;rows这项参数告诉浏览器您想将视窗分割成几列;而 cols这项参数是告诉浏览器您想将视窗分割成几行。
  可以用很多组的 <frameset...> tags 将视窗分割得更复杂。
  可以给每个frame一个"名字" (name)。frame的名字在JavaScript语法中的地位非常重要。     可以用 <src> 告诉浏览器您要载入哪一个 HTML文件。 二、如何访问框架
  在前面我们介绍过使用document.forms[]实现单一窗体中不同元素的访问。而要实现框架中多窗体的不同元素的访问,则必须使用window对象中的Frames属......

阅读全文(1020) | 评论:0

JavaScript教程--从入门到精通--(8)(2008-08-23 20:00:00)

摘要: 用JavaScript脚本实现Web页面信息交互   要实现动态交互,必须掌握有关窗体对象(Form)和框架对象(Frames)更为复杂的知识。 一、窗体基础知识
  窗体对象可以使设计人员能用窗体中不同的元素与客户机用户相交互,而用不着在之前首先进行数据输入,就可以实现动态改变Web文档的行为。 1、什么是窗体对象
窗体(Form):它构成了Web页面的基本元素。通常一个Web页面有一个窗体或几个窗体,使用Forms[]数组来实现不同窗体的访问。
<form Name=Form1>
<INPUT type=text...>
<Input type=text...>
<Inpup byne=text...>
</form>
<form Name=Form2>
<INPUT type=text...>
<Input type=text...>
</form>
  在Forms[0]中共有三个基本元素,而Forms[1]中只有两个元素。
  窗体对象最主要的功能就是能够直接访问HTML文档中的窗体,它封装了相关的HTML代码:
<Form
Name ="表的名称"
Target ="指定信息的提交窗口"
action ="接收窗体程序对应的URL"
Method =信息数据传送方式(get/post)
enctype ="窗体编码方式"
[onsubmit ="JavaScript代码"]>
</Form>
  2、窗体对象的方法
  窗体对象的方法只有一个--submit()方法,该方法主要功用就是实现窗体信息的提交。如提交Mytest窗体,则使用下列格式:
document.mytest.submit()
 
3、窗体对象的属性
  窗体对象中的属性主要包括以下:elements name action target encoding method.
  除Elements外,其它几个均反映了窗体中标识中相应属性的状态,这通常是单个窗体标识;而ele......

阅读全文(1013) | 评论:0

JavaScript教程--从入门到精通--(7)(2008-08-23 19:59:00)

摘要:JavaScript窗口及输入输出   JavaScript是基于对象的脚本编程语言,那么它的输入输出就是通过对象来完成的。其中有关输入可通过窗口(Window)对象来完成,而输出可通过文档(document)对象的方法来实现。 一、窗口及输入输出
请看下面例子:
<HTML>
<Head>
<script languaga="JavaScript">
Var test=window.prompt("请输入数据:");
document.write(test+"JavaScript输入输出的例子");
</script>
</Head>
</HTML>
  其中window.prompt()就是一个窗口对象的方法,其基本作用是,当装入Web页面时在屏幕上显示一个具有“确定”和“取消”的对话框,让你输出数据。document.writle是一个文档对象的方法,它的基本功能,是实现Web页面的输出显示。见图1所示。 图1   1、窗口对象
  该对象包括许多有用的属性、方法和事件驱动程序,编程人员可以利用这些对象控制浏览器窗口显示的各个方面,如对话框、框架等。在使用应注意以下几点:
 该对象对应于HTML文档中的<Body>和<FrameSet>两种标识;
 onload和onunload都是窗口对象属性;
 在JavaScript脚本中可直接引用窗口对象。如:
window.alert("窗口对象输入方法")
可直接使用以下格式:
alert("窗口对象输入方法")
 
2、窗口对象的事件驱动
  窗口对象主要有装入Web文档事件onload和卸载时onunload事件。用于文档载入和停止载入时开始和停止更新文档。 3、窗口对象的方法
  窗口对象的方法主要用来提供信息或输入数据以及创建一个新的窗口。
  创建一个新窗口open()
使用window.open(参数表)方法可以创建一个新的窗口。其中参数表提供有窗口的主要特性和文档及窗口的命名。
  具有OK按钮的对话框
alert()方法能创建一个具有OK按......

阅读全文(935) | 评论:0