2011年6月14日

CSharp中的Vector结构

摘要: 本节将开发一个结构Vector,来演示运算符重载,这个Vector结构表示一个三维矢量。如果数学不是你的强项,不必担心,我们会使这个例子尽可能简单。三维矢量 只是三个(double)数字的一个集合,说明物体和原点之间的距离,表示数字的变量是x、y和z,x表示物体与原点在x方向上的距离,y表示它与原点在y方向上的距离, z表示高度。把这3个数字组合起来,就得到总距离。例如,如果x=3.0, y=3.0, z=1.0,一般可以写作(3.0, 3.0, 1.0),表示物体与原点在x方向上的距离是3,与原点在 y方向上的距离是3,高度为1。 矢量可以与矢量或数字相加或相乘。在这里我们使用术语" 阅读全文

posted @ 2011-06-14 16:32 Tony Liu 阅读(3691) 评论(0) 推荐(0) 编辑

CSharp中Vector, ArrayList, HashMap 和Hashtable

摘要: 首先C#只有Hashtable,Hashtable表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。C#中没有HashMap,而HashMap是Java1.2引进的Map interface的一个实现.... 1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类; 2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决 阅读全文

posted @ 2011-06-14 16:09 Tony Liu 阅读(4074) 评论(0) 推荐(0) 编辑

DotNet的经典网站

摘要: 学习.net的经典网站(转)原文:dotnet学习参考网站学习.Net的经典网站还不错推荐给大家 原文—— 名称:快速入门 地址:http://chs.gotdotnet.com/quickstart/ 描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例程序,直接在网上查看此示例即看。 **************************************************** 名称:微软官方.NET指导站点 地址:http://www.gotdotnet.com/ 描述:上面的站点是本站的一个子站点,本站点提供微软.NET官方 阅读全文

posted @ 2011-06-14 14:55 Tony Liu 阅读(1388) 评论(0) 推荐(0) 编辑

CSharp中抽象类与接口的区别

摘要: 相同点: (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明 (4) 派生类必须实现未实现的方法 区 别: (1) 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。 (2) 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总是后带able字段,证明其是表述一类“我能做。。。” (3) 接口可以被多重实现,抽象类只能被单一继承 (4) 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中 (5) 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共 阅读全文

posted @ 2011-06-14 14:41 Tony Liu 阅读(4259) 评论(0) 推荐(0) 编辑

csharp一个简单的死锁程序

摘要: Jeffrey Richter在《Windows核心编程(第5版)》中描述了一个死锁情况:假设线程Thread1和Thread2均需要独占方式访问互斥资源m_res1、m_res2,应用互斥对象Monitor在使用前Enter(相当于加锁)、使用后Exit(相当于解锁)。由于涉及到两个资源,此时需要特别注意加锁的顺序。如果两个线程的加锁顺序不同(Thread1先锁m_res2、Thread2先锁m_res1),此时容易发生死锁。依据该思路,下面给出了C#实现的完整程序代码: class Program{ private static object m_res1 = new object(); 阅读全文

posted @ 2011-06-14 14:14 Tony Liu 阅读(1224) 评论(0) 推荐(0) 编辑

csharp类、引用类型(class)与结构、值类型(struct)的区别

摘要: 数据在内存中的存储位置,取决于它的数据类型,在C#中,分为值类型和引用类型,值类型的数据存储在内存中的堆栈中,每个变量或程序都有自己的堆栈,不可以共用一个堆栈地址。当数据一个值类型的变量传递到另一个相同类型的变量时,会在堆栈中分配两个不同的地址。 而引用类型的数据存储在内存中的堆中,可以不同的变量或程序共同使用同一个位置的数据。当数据从一个引用类型的变量传递到另一个相同类型的变量时,只是把这个变量的引用地址传递给新的变量,同时引用当前堆中存储的数据。 可以通过实例得到详细结论:using System;using System.Collections.Generic;using System. 阅读全文

posted @ 2011-06-14 13:29 Tony Liu 阅读(4389) 评论(0) 推荐(0) 编辑

csharp中的结构

摘要: 1.结构的声明结构是用户自定义的值类型w 公有成员使用PascalCase规则w 非公有成员使用camelCase规则w 可以使用结尾分号struct Pair { public int X, Y; //公有变量名单词的首字母大写(PascalCase规则)}struct Pair { private int x, y; //非公有变量名第一个单词的首字母小写(camelCase规则)}struct Pair { int x, y; //缺省的访问修饰符是private};//可以有结尾分号 结构是C#程序员用来定义自己的值类型的最普遍的机制。结构比枚举更强大,因为它提供函数、字段、构造函数、 阅读全文

posted @ 2011-06-14 10:40 Tony Liu 阅读(2789) 评论(0) 推荐(0) 编辑

Csharp关键字----delegate(委托)

摘要: Delegate类简介 ------------------------ 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 委托(Delegate)类是一种数据结构,通过它可引用静态方法或引用类实例及该类的实例方法。 以往的界面编程中我们应该都接触过各种类型的事件驱动(event driven)的处理模式, 在这种模式里,我们定义相应事件触发的函数。 例如: Button1 的 Click事件,我们可以编写Button1_Click 或 Btn1Clicked等函数来做相应的驱动处理。 而事件与驱动函数的对应关系就是通过委托(Delegate)类来关联的。 阅读全文

posted @ 2011-06-14 00:15 Tony Liu 阅读(1717) 评论(0) 推荐(0) 编辑

csharp中的委托、委托和时间对Observer设计模式的意义

摘要: 引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作为方法的参数我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问 阅读全文

posted @ 2011-06-14 00:04 Tony Liu 阅读(1462) 评论(0) 推荐(0) 编辑

csharp基础

摘要: 1. 面向对象的思想主要包括:继承 多态 封装● 封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。● 继承:子类拥有父类的所有数据和操作。● 多态:一个程序中同名的不同方法共存的情况。 有两种形式的多态– 重载与重写。2. 什么是装箱和拆箱装箱(boxing)和拆箱(unboxing)机制使得在C#类型系统中,任何值类型、引用类型和object(对象)类型之间进行转换,这种转换称为绑定连接。简单地说,有了装箱和拆箱的概念,对任何类型的值来说最终都可看作是object类型。 1、装箱转换含义:将一个值类型隐式地转换成一个object类型,或把这个值类型转换成 阅读全文

posted @ 2011-06-14 00:01 Tony Liu 阅读(4406) 评论(0) 推荐(1) 编辑

导航