摘要:
CLR是 .NETFramework 精简版的基础。它负责在执行时管理代码,提供内存管理和线程管理等核心服务,同时又确保代码的安全性和准确性。Common Language Runtime 的缩写。运行在.NETFramework中的代码叫做managedcode,反之叫做unmanagedcode。相比unmanagedcode,managed code 有很多好处,比如可以用多种编程语言编写、提高安全性、易于版本控制和程序发布等等。这些都是由CLR提供的。但也有一些不利点,最容易想到的就是代码运行速度问题了。 要为managed code提供以上功能,CLR必须知道代码中的数据类型、类和与 阅读全文
摘要:
索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。1、索引器的定义C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。定义索引器的方式与定义属性有些类似,其一般形式如下:[修饰符] 数据类型 this[索引类型 index]{ get{//获得属性的代码} set{ //设置属性的代码}}修饰符包括 public,protected,private,internal,new,virtual,sealed,override, abstract,extern.数据类型是表示将要存取的 阅读全文
摘要:
C#中有两种不同的相等:引用相等和值相等。值相等,即两个对象包含相同的值。例如,两个值为2的整数数具有值相等性。引用相等意味着要比较的两个对象不是两个对象,而是两个“对象引用”,这两个“对象引用”引用的是同一个对象。1、对于值类型 对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。2、对于引用类型 对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。 ==操作比较的是两个变量的值是否相等。 equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类 阅读全文
摘要:
.NET将数据类型分为值类型(value type)和引用类型(reference type)一个具有值类型(value type)的数据存放在栈内的一个变量中。即是在栈中分配内存空间,直接存储所包含的值,其值就代表数据本身。值类型的数据具有较快的存取速度。一个具有引用类型(reference type)的数据并不驻留在栈中,而是存储于堆中。即是在堆中分配内存空间,不直接存储所包含的值,而是指向所要存储的值,其值代表的是所指向的地址。当访问一个具有引用类型的数据时,需要到栈中检查变量的内容,该变量引用堆中的一个实际数据。引用类型的数据比值类型的数据具有更大的存储规模和较低的访问速度。值类型(1 阅读全文
摘要:
关于Debug和Release之本质区别 使用条件编译来完成区分编译Debug版本和Release版本: 1、首先来看一段代码: package { import flash.display.Sprite; public class TestBuild extends Sprite { CONFIG::debug public function TestBuild() { graphics.beginFill(0xff0000,1); graphics.drawRect(0,0,100,100); } CONFIG::release public function TestBuild() { 阅读全文
摘要:
反射:是指对一个程序集中的元数据进行检查的过程。可以利用反射做下面这些事情:(1)访问程序集中的元数据;(2)使用元数据在运行时动态调用一个类型的成员,而不是执行编译时绑定。特性(attribute):是在一个程序集中插入额外的元数据,并将这些元数据同一个编程构造(比如类、方法或者属性)关联起来的一种方式。 阅读全文
摘要:
private、protected、public和internal的区别private是完全私有的,只有在类自己里面可以调用,在类的外部和子类都不能调用,子类也不能继承父类的private的属性和方法。protected虽然可以被外界看到,但外界却不能调用,只有自己及自己的子类可以调用(protected的属性和方法都可以被子类所继承和调用)。private和protected的共同点:外部都不可以访问。private和protected的不同点:在同一类中可视为一样,但在继承中就不同了,private在派生类中不可以被访问,而protected可以。public对任何类和成员都完全公开,无限 阅读全文
摘要:
1. sealed——“断子绝孙” 密封类不能被继承。密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。 即:密封类不会有子类,所以是“断子绝孙”。2. new——“你是我的,我是我的” new关键字用于显式隐藏从基类继承的成员。也就是在使用派生类时调用的方式方法是new关键字新定义出来的方法,而不是基类的方法。 在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。 即:好比是不用祖宗的东西,而是用自己创造(new)的东西。3. v 阅读全文
摘要:
托管代码中的字符串是一类特殊的对象,它不可被改变的,每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,也就是为该新对象分配新的空间。这就带来两个问题:1:原来的字符串是不是还在内存当中?2:如果在内存当中,那么机密数据(如密码)该如何保存才足够安全?先来看第一个问题:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicclass Program{staticv 阅读全文
摘要:
最近对代码作了一些优化,试验后效果还可以,但是发现界面会闪烁,具体是TreeView控件会闪烁,语言为C#,IDE为VS2005。在查阅一些资料,使用了一些基本技术后(如开启双缓冲),发现没什么效果。于是使用Profiler工具,查找出瓶颈在于每次更新完界面的EndUpdate操作(使用这个是为了减少界面更新次数,但这里不理想是因为控件中中的元素很多),猜想大概每次更新,.Net底层都会更新重绘每个图元,所以速度会慢,造成闪烁。但是如果这样,使用双缓冲应该会有较好效果。再看代码,发现可能是更新动作太过频繁,于是降低速度,有所好转,但还是不行。继续在网上查阅,最终找到一个方案比较合适。原来底层重 阅读全文
摘要:
我们用的比较多的非泛型集合类主要有 ArrayList类 和HashTable类。我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,14:31:45,例如我们需要在电子商务网站中存储用户的购物车信息(商品名,对应的商品个数)时,完全可以用 Dictionary<string, int> 来存储购物车信息,而不需要任何的类型转化。1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小, 但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的 阅读全文
摘要:
昨天下午在公司没事,动手写了几道面试题,我也不是闲的发慌,就是感觉每天写业务方面的代码写长了,思维不是很局限,想做下算法题活跃下思维! 欢迎发表意见和拍砖!题目1输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。View Code /// <summary> /// 获得数组最大子数组的和 /// </summary> / 阅读全文
摘要:
C# codenamespace UDPServer{class Program{static void Main(string[] args){int recv;byte[] data = new byte[1024];//构建TCP 服务器//得到本机IP,设置TCP端口号IPEndPoint ipep = new IPEndPoint(IPAddress.Any , 8001);Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram , ProtocolType.Udp);//绑定网络地址newso 阅读全文
摘要:
params一个可以让方法拥有的可变参数的关键字;using System;public class Program{ static void UseParams(params int[] list) { string temp=""; for(int i=0;i<list.Length;i++) { temp=temp+""+list[i].ToString(); } Console.WriteLine(temp); } static void UseParams2(params object[] list) { string temp=&quo 阅读全文
摘要:
这个是从网上转过来的汉字转拼音缩写的函数,有时候这样的程序还是很有用处的,不过不知道原理是什么,所以用起来还是不怎么放心哦~~~原文:刚刚整理好-汉字转拼音缩写的函数(C#) 在CSDN上找了一下,没有找一完整的转换函数,特在前人基础上整理了一下,接下来的项目中有可能用到。感谢bugfree(八个飞飞)。 /// <summary> /// 汉字转拼音缩写 /// Code By MuseStudio@hotmail.com /// 2004-11-30 /// < /summary> /// <param name="str">要转换的 阅读全文
摘要:
本文是从 What is Domain Driven Design?这篇文章翻译而来。 ”…在很多领域,专家的作用体现在他们的专业知识上而不是智力上。“ -- Don Reinertsen 领域驱动设计(Domain Driven Design)是一种软件开发方法,目的是让软件系统在实现时准确的基于对真实业务过程的建模并根据真实业务过程的调整而调整。 传统的开发工作趋向于一种以技术为先导的过程,需求从业务方传递到开发团队,开发人员依据需求上的描述创造出最有可能的假想。 在瀑布开发过程中,这导致了大量的需要频繁校对,分析,复核和审批的需求文档。之后这些文档被交给开发团队去变成能够运行的软件。 敏 阅读全文
摘要:
本人做Winform开发多年,孜孜不倦,略有小成,其中收集或者自己开发一些常用的东西,基本上在各个项目都能用到的一些开发经验及知识积累,现逐步介绍一些,以飨读者,共同进步。 1、窗口【×】关闭按钮变为最小化,并在托盘提示信息一般有些管理系统,为了防止客户随意关闭程序或者基于其他原因,一般会把 窗口【×】关闭按钮变为最小化,如大家熟悉的飞信、MSN等等,但是有些不是很熟悉的客户,最小化到托盘的时候,却不知道程序到了那里去了,因此,最小化的时候,伴随一个气泡提示信息,显得有一定的必要,如下截图所示。首先在主窗体的设计界面中添加一个NotifyIcon控件,然后实现相关的代码即可 阅读全文
摘要:
CSS 如何使DIV层水平居中今天用CSS碰到个很棘手的问题,DIV本身没有定义自己居中的属性,网上很多的方法都是介绍用上级的text-align: center然后嵌套一层DIV来解决问题.可是事实上这样的方法科学吗?经过网络搜索和亲自实验得出以下结论:正确的也是对页面构造没有影响的设置如下:对需要水平居中的DIV层添加以下属性:margin-left: auto;margin-right: auto;经过这么一番设置问题似乎解决了,在FF中已经居中了,可是在IE中看竟然还是没有居中!郁闷了一下午,就是找不出问题所在,还特地比较了网上的文章竟然一模一样.问题到底出在哪里呢?感谢网友乐天无用帮 阅读全文
摘要:
在学习DataTable知识之前,我们有必要了解下ADO.NET。以下摘自MSDN:ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索、处理和更新所包含的数据。ADO.NET 通过数据处理将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。ADO.NET 包含用于连接到数据库、执行命令和检索结果的 .NET Framework 数据提供程序。您可以直接处理检索到的结果,或将其放入 ADO.NET DataSet 对象, 阅读全文
摘要:
本次课我们要学习数组的属性、foreach的用法、我上节课提到的交错数组,我会通过多个例子的演示讲解让你们理解交错数组定义已经与规则的二维数组(矩形数组)的区别加深理解,下一节我们还将学习数组的常用方法。下面我们来学习一下数组的属性,什么是属性呢?在以后学习类的时候我会给大家详细的讲解,现在我给你们举个现实生活的例子,帮助你们理解什么叫属性,属性一般都是名词,表示它的所有者(即对象)拥有的特性,如抹布(对象)的颜色、大小(属性),而下一节将学习的数组的方法一般是动词,如抹布的功能,抹布(对象)清除(方法)桌面、车辆、地面(这些动作的宾语也可以比喻成以后要学习的参数),现在你们就记住属性是描述对 阅读全文