随笔分类 - C#
摘要:本文的代码包以cosmos-12304.zip为例(从这个包开始,COSMOS的内核算是有了个基本的雏形,就像是一颗大树在出芽前会先长出庞大的根系,现在就要破土长出第一颗芽了)IL2CPU之于COSMOS就相当与GCC之于LINUX,查看COSMOS的源代码,可以发现没有一行汇编代码,就连BOOTLOADER也是使用C#语言来完成的,在COSMOS中很对与硬件相对应的类,如屏幕、键盘等,然后在编译的时候再由IL2CPU识别出这些特定的类并转换成机器指令代码代码。由于是纯C#的开发环境,因此IL2CPU责任重大,需要实现C#语言的各种特性,包括对象的初始化、多态、事件、委托等等,当然到cosmo
阅读全文
摘要:cosmos简介cosmos全称C# open source manage operation system,是一个使用C#语言基于.net framwark框架编写的开源操作系统,主页www.gocosmos.org。可从cosmos.codeplex.com获取最新的源代码。Cosmos的源代码使用C#来编写,先把源代码编译成IL中间语言,然后再由专门针对该项目编写的编译器IL2CPU来把编译好的IL源代码转换成本地机器码,目前处于里程碑5的阶段,只支持x86体系的CPU。官方网站上计划以后将会提供对ARM、MIPS等其他CPU的支持。目前在学习操作系统的知识,想找份开源的代码来学习学习,
阅读全文
摘要:微软一站式示例代码库 [中文版] 2011年2月更新最新版本的All-In-One Code Framework在2011年春节之后新鲜出炉啦!!下载地址: http://1codechs.codeplex.com/releases/view/61192如果您第一次听说All-In-One Code Framework这个项目,请参阅主页上的相关介绍http://1code.codeplex.com/, 以及下列两篇blog All-In-One Code Framework:一站式微软开发技术框架解决方案 微软一站式开发技术框架解决方案 中文说明 Azure新示例 CS/VBAzureBi.
阅读全文
摘要:简介 C# 4.0 动态查找 类型 动态操作 运行时查找 示例 带有动态参数的重载解析 动态语言运行时 已知问题 命名参数和可选参数 可选参数 命名的和可选的实参 重载解析 互操作特性 动态引入 无PIA的编译 ref 省略ref 已知问题 变性 协变性 逆变性 限制 COM Example COM示例 Relationship with Visual Basic 与Visual Basic的关系 资源 简介 Microsoft Visual C# 3.0作为Visual Studio2008的一部分发布以来已经快一年了。在VS Managed Languages团队,我们一直努力创建该语言的
阅读全文
摘要:http://developer.51cto.com 2009-07-02 10:07 黄永兵 译 51CTO.com 我要评论(0)http://developer.51cto.com/art/200907/133278.htm本文探索了C# 4.0中新的动态类型、命名参数和可选参数,文中的C# 4.0动态类型实例全部在Visual Studio 2010 Beta版本中进行。Dynamic关键字可以算是C# 4.0中新增的最重要的特性了。【51CTO译文精选】C# 4.0包括大量的增强和新增特性,包括:1、支持动态查找2、同时支持命名参数和可选参数3、增强的COM互操作特性4、支持
阅读全文
摘要:http://www.cnblogs.com/jhh0111/archive/2008/10/23/1318223.html看了eaglet的《几种C#框架提供的数据结构对单值查找的效率比较》,发现作者对Hashtable与Dictionary<K, V>存在一些误解,抽点空,讲讲我对Hashtable与Dic的看法。我个人是觉得,无论什么时候,都应该使用Dictionary<K,V>,理由如下:1、Dic是类型安全的,这有助于我们写出更健壮更具可读性的代码,而且省却我们强制转化的麻烦。这个相信大家都明白。2、Dic是泛行的,当K或V是值类型时,其速度远远超过Hasht
阅读全文
摘要:Author:Eaglet 在开始看这篇文章之前请先看这篇关于Hashtable与Dictionary性能的讨论。 我的这篇文章中的有些论点是不正确的,通过这个讨论也让我增长了很多知识。 做分词组件时,有网友提出采用Hashtable数据结构查找字符串效率较低,建议改为Dictionary,其理由是采用Hashtable 时Key值是object会触发装箱和拆箱动作,一直对这种说法表示怀疑,因为我理解只有值类型和引用类型通过object互转时才会发生装箱和查询,引用类型之间强制转换不应发生装箱和拆箱,而Dictionary泛型实际上底层还是调用的Hashtable,所以效率怎么会比Hashta
阅读全文
摘要:在上一篇文章中,我们详细讲述了C# 3.0中Lambda表达式(构造委托)的使用方式,它在语义上的优势及对编程的简化——这些内容已经属于委托的“扩展内容”。不如这次谈得更远一些,就来讨论一下上文中“编程方式”的性能相关话题。循环分离及其性能在上文的第一个示例中,我们演示了如何使用Lambda表达式配合.NET 3.5中定义的扩展方法来方便地处理集合中的元素(筛选,转化等等)。不过有朋友可能会提出,那个“普通写法”并非是性能最高的实现方法。方便起见,也为了突出“性能”方面的问题
阅读全文
摘要:在上一篇文章中我们简单探讨了.NET 1.x和.NET 2.0中委托表现形式的变化,以及.NET 2.0中匿名方法的优势、目的及注意事项。那么现在我们来谈一下.NET 3.5(C# 3.0)中,委托的表现形式又演变成了什么样子,还有什么特点和作用。.NET 3.5中委托的写法(Lambda表达式)Lambda表达式在C#中的写法是“arg-list => expr-body”,“=>”符号左边为表达式的参数列表,右边则是表达式体(body)。参数列表可以包含0到多个参数,参数之间使用逗号分割。例如,以下便是一个使用Lambda表达式定
阅读全文
摘要:2009-08-05 04:50 by 老赵(赵劼,网名老赵,洋名Jeffrey Zhao,目前就职于盛大创新院产品开发部,研究员。)在《关于最近面试的一点感想》一文中,Michael同学谈到他在面试时询问对方“delegate在.net framework1.1,2.0,3.5各可以怎么写”这个问题。于是乎,有朋友回复道“请问楼主,茴香豆的茴有几种写法”,“当代孔乙己”,独乐,众乐。看了所有的评论,除了某些朋友认为“的确不该不知道这个问题”之外,似乎没有什么人在明确支持楼主。不过我支持,为什么?因
阅读全文
摘要:转自:老赵博客 blog.zhaojie.me在许多年前,“语言”就等同于“平台”,例如C,C++以及最早的Ruby和Python等等。但是随着技术发展,出现了一些通用的平台,例如.NET和Java,逐渐这些平台上的语言也越来越多。再后来,某些语言在不同平台上的实现也越来越多,事情也变得有些复杂。技术在发展,但是从目前社区的讨论中,我发现许多朋友的观念还没有跟上。简单地说,如今的观念,一定要从“语言即平台”切换成“语言及平台”,当分清“语言”和“平台”这两个不同事物之后,许多问题才能讨论地清楚。例如我写过一个太监系列《Why Java Sucks and C# Rocks》,其中谈的是C#和J
阅读全文
摘要:http://www.cnblogs.com/tianzhiliang/archive/2010/08/31/1813629.htmlC#中异步和多线程的区别是什么呢?异步和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为异步和多线程是等同的概念。但是,异步和多线程还是有一些区别的。而这些区别造成了使用异步和多线程的时机的区别。 异步和多线程的区别之异步操作的本质 所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式
阅读全文
摘要:C#泛型详解 我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一种办法,在方法中传入通用的数据类型,这样不就可以合并代码了吗?泛型的出现就是专门解决这个问题的。读完本篇文章,你会对泛型有更深的了解。为什么要使用泛型为了了解这个问题,我们先看下面的代码,代码省略了一些内容,但功能是实现一个栈,这个栈只能处理int数据类型:public class Stack { private int[] m_item; public int Po
阅读全文
摘要:Report报表学习系列一 (开篇)最近公司要用到Report报表,为什么要用Report报表,原因很简单,客户要求用免费的。因此专门去学习了一下,看了园子里面很多大牛的随笔,谢园子里面无私的朋友,把自己的学习经验和大家分享,这里特别感谢“蜡人张”。好吧,就这么开始,我是第一次写随笔,因为还到明年才毕业,经验比较少,觉压力很大,写随笔也主要是学习而已,比较适合像我这样按步部就班的初学者。下面用的方法是用报表向导直接在界面上操作的。一 建数据库(比较懒的朋友可以直接复制下面的SQL)CREATE DATABASE RptDBGOUSE RptDBGOCREATE TABLE Class(Syst
阅读全文
摘要:导读:作者蒋金楠,网名Artech。解决方案架构与互联系统MVP,微软最有影响力开发者。在《谈谈C# 4.0新特性“缺省参数”的实现》中我们揭示了“缺省参数”的本质,现在我们接着来谈谈C#4.0中另一个重要的新特性:协变(Covariance)与逆变(Contravariance)。对于协变与逆变,大家肯定不会感到陌生,但是我相信有很多人不能很清晰地说出他们之间的区别。我希望通过这篇文章能够让读者更加深刻的认识协变与逆变。以下是文章内容:一、两个概念:强类型与弱类型为了后面叙述方便,我现在这里自定义两个概念:强类型和弱类型。在本篇文章中,强类型和弱类型指的是两个具有直接或者间接继承关系的两个类
阅读全文
摘要:前言在我们应用程序开发过程中,经常会遇到一些问题,需要使用多线程技术来加以解决。本文就是通过几个示例程序给大家讲解一下多线程相关的一些主要问题。执行长任务操作 许多种类的应用程序都需要长时间操作,比如:执行一个打印任务,请求一个 Web Service 调用等。用户在这种情况下一般会去转移做其他事情来等待任务的完成,同时还希望随时可以监控任务的执行进度。?/P 下面的代码片断示例了当长任务执行时用户界面是如何被更新的。// 显示进度条void ShowProgress( int totalStep, int currentStep ){_Progress.Maximum = totalS
阅读全文
摘要:巧用C#做中间语言 实现Java调用.net DLL时间:2010-08-11 06:16来源:未知作者:壹号编辑点击:3次本文将详细为大家介绍一个java调用.net DLL的方法,以实现特殊的客户的特殊要求:“在Java项目中必须使用其提供的用.net写的DLL加密机制!”环境与工具:◆.net framework 3.5 C#◆java jdk1.5, Tomcat 5.5◆jacob-1.15-M3实现例子:一、C# 制作Com组件新建一个Class 项目,取名TestCom代码using System; using System.Collections.Generic; using
阅读全文
摘要:一、准备需要的软件:Ildasm.exe:用来将dll,exe编译为IL文件ilasm.exe:用来将IL文件编译回来dll或exe这2个工具装好VS就有了(VS2005的可以处理2003的,反过来不行)文本处理工具:UltraEdit :http://www.crsky.com/soft/1469.htmlEmEditorPro:http://www.crsky.com/soft/4278.html根据不同情况需要使用上面不同的工具其他工具:Reflector.exe :http://www.pediy.com/tools/dotnet.htmxenocode FOX: http://www
阅读全文
摘要:新建安装部署项目打开VS编辑器,点击新建项目,选择:其他项目类型--安装与部署--安装向导(安装项目也一样),然后点击确定.(详细见下图)本文虽以VS2005打包为例,但是在VS2008下一样也可以用此法,本人已经在VS2008下测试通过。2:安装向导关闭后打开安装向导,点击下一步,或者直接点击完成.3:开始制作安装向导完成后即可进入项目文件夹:双击"应用程序文件夹"在右边的空白处右击,选择添加-文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来.然后右击你的可执行文件,创建快捷方式,然后把快捷方式分别剪切或复制到左边的"用户的'程序'菜单"和"用户桌面"中.这样安装程序安装安装
阅读全文
摘要:尽管过了相当长的时间,花费了不少资源,微软和.NET社区还是在最近几年加入到了开源运动的阵营中来了,这令人相当惊讶,因为两大阵营一直都是经常对立的。然而,事实是依靠开源,微软社区中的开源开发工具日益发展壮大。本文将深入了解.NET领域的开源项目,介绍七个在全球受到数百万.NET开发者拥戴和欢迎的开源项目。AJAX 控件工具包仅仅五年时间,自从AJAX的概念提出来以后,使用JAVASCRIPT,XM...
阅读全文