- 博客(126)
- 收藏
- 关注
原创 C#中的字符编码问题
该文件的编码为GB18030,每行的宽度为23个字符,其中第1-8列为员工姓名,第10-23列为工资额。现在我们要写一个C#程序求出该单位员工的平均工资,如下所示: 1using System; 2using System.IO; 3using System.Text; 4 5namespace Skyiv.Ben.Test 6{ 7 sealed c
2015-07-31 06:27:23 962
原创 对 File.Delete 方法的一点看法
在我写的“推箱子”程序的 DataFile 类中有下面这么一个方法: /// /// 删除通关步骤文件 /// /// 关数 private void DeleteStepsFile(int level) { File.Delete(GetStepsFileName(fileName, level));
2015-07-31 06:25:17 5778
原创 .NET Framework CLR 版本检测
我写了一个 C# 程序来检测 .NET Framework CLR 版本。在 Ubuntu 操作系统中的运行结果:ben@ben-m4000t:~/work$ ./ClrInfo.exe OS Version: Unix 2.6.31.16 CLR Version: 2.0.50727.1433 ( Mono 2.4.2.3 )Default Encodi
2015-07-31 06:22:56 654
原创 [翻译] Programming F#
最近,空军和我试译 Microsoft F#团队的 Chris Smith 所著的 Programming F# 一书。
2015-07-31 06:18:59 765
原创 PageSetupDialog 类的一个 BUG
我们在用 C# 语言编写 WinForm 程序时,如果在程序中需要打印一些东东的话,经常需要先使用页面设置对话框进行一些设置。而 Microsoft .NET Framework Base Class Library 已经为我们考虑得很周到了,我们只需要使用 System.Windows.Forms 命名空间中的 PageSetupDialog 类就行了。但是这个类有个小小的 BUG,下面就是相应
2015-07-31 06:16:04 629
原创 Mono源代码学习笔记:Console类(四)
NullStream 类 (internal class)下面就是 mcs/class/corlib/System.IO/NullStream.cs:01: namespace System.IO02: {03: class NullStream : Stream04: {05: public override bool CanRead { get {
2015-07-30 08:42:33 594
原创 浅谈 ZipArchive 类
Microsoft .NET Framework 4.5 新增了 ZipArchive 类Microsoft Windows 8 Consumer Preview 操作系统已经内置了 Microsoft .NET Framework 4.5,它新增了对 Zip 文件的支持,这是通过 System.IO.Compression 命名空间中新增的 ZipArchive、ZipFile 等类实现
2015-07-30 08:38:01 2222
原创 浅谈 System.Linq.Enumerable.AsEnumerable 方法
引言在 MSDN 中对 System.Linq.Enumerable 类的 AsEnumerable 方法相关描述如下所示:Enumerable.AsEnumerable 方法: 返回类型化为 IEnumerable 的输入。命名空间: System.Linq程序集: System.Core (在 System.Core.dll 中)语法: public static
2015-07-30 08:34:58 2338
原创 C#解惑30: 循环者的爱子
谜题30: 循环者的爱子 请提供一个对i的声明,将下面的循环转变为一个无限循环: while (i != i + 0) { } 与前一个谜题不同,你必须在答案中不使用浮点数。换句话说,你不能把i声明为double或float类型。解惑30: 循环者的爱子 与前一个谜题一样,这个谜题初看起来是不可能实现的。毕竟,一个数字总是等于它自
2015-07-29 09:16:51 597 2
原创 C#解惑27: 变幻莫测的i值
谜题27: 变幻莫测的i值 你的任务仍旧是要指出这个程序将打印什么。 class Shifty { static void Main() { int i = 0; while (-1 i++; System.Console.WriteLine(i);
2015-07-29 09:14:12 507
原创 C# 语言中 struct 的陷阱
假设我们要为某大学写一个工资管理程序。首先是表示员工的 Employee 类(Employee.cs):01: namespace Skyiv.Ben02: {03: class Employee04: {05: public string Department { get; private set; }06: public string Name
2015-07-29 09:11:32 567 2
原创 三谈 C# 交互窗口
mono 2.8.1 中和 csharp.exe 和 Mono.CSharp.dll 相关的 C# 源程序总共只有六十个左右,分布在以下目录中: Mono.CSharp.dll 需要以下57个 C# 源文件:..\..\mcs\anonymous.cs..\..\mcs\argument.cs..\..\mcs\assign.cs..\..\mcs\attri
2015-07-29 09:08:04 1066 1
原创 编写优雅程序的一点小小心得
初的程序现在,为了突出我们的主题,这里给出一个简化版本的只有 17 行的 CUI 程序 ConsoleColorCuiTester.cs:01: using System;02: using System.Drawing;03: 04: namespace Skyiv.Tester05: {06: static class ConsoleColorCuiTes
2015-07-28 07:40:38 408
原创 Bmob视频教程
110439l9o8xlt9jahac88l.png (65.03 KB, 下载次数: 0)下载附件1 分钟前 上传1Bmob特点对于很多Android/ios/wp个人移动开发者来说,开发一个具有网络功能的应用不是一件容易的事,不仅需要购买/租赁服务器,还必须掌握一门诸如Java/.net/php这类的服务器开发语言,每开发一款移动应用程序,就必须
2015-07-28 07:34:45 2267
原创 国嵌语言的艺术之C++项目讲解精讲班
1.C到C++的升级数据类型的加强 面向对象的支持 C与C++的关系 2.函数的升级函数默认参数 函数重载 内联函数 C函数与C++函数的交互 3.华丽的新宠引用的定义 引用与指针 引用的使用技巧 4.新的关键字C++的类型转换 C++的动态内存分配 命名空间 5.基础C++经典问题解析 专题二乾坤合一 1.面向对象类的概念
2015-07-28 07:33:11 1602
原创 在 Ubuntu 9.10 操作系统中安装 mono 2.6
我们知道,在 2009-10-29 发布的 Ubuntu 9.10 操作系统中已经内置 mono 2.4.2.3 版本了。到了 2009-12-08,mono 2.4.3 版本发布了。随后,在 2009-12-14 日,又发布了 mono 2.6 版本。而 Patric 又在 2009-11-29 日发表了 Mono 2.6 parallel environment on Ubuntu 9.1
2015-07-28 07:28:35 578
原创 在 Ubuntu 9.10 操作系统中安装 MonoDevelop 2.2
我们知道,在 Ubuntu 9.10 操作系统中可以使用以下命令来安装 MonoDevelop 2.0:$ sudo apt-get install monodevelop 但是,如果我们需要安装最新的 MonoDevelop 2.2 版本的话,可以按照以下步骤从源代码进行编译:ben@ben-vbox:~$ cd srcben@ben-vbox:~/src
2015-07-28 07:22:13 550
原创 在 Ubuntu 10.10 操作系统中安装 Mono 2.8.2
前言Ubuntu 10.10 自带了 Mono 2.6.7。而目前最新版本是 Mono 2.8.2。由于 Ubuntu 操作系统中的“阿贴便笺”等软件是用 C# 开发的,因此它们依赖于 Mono 。为了不破坏 Ubuntu 操作系统中这类软件,我们需要并行地安装 Mono 2.8.2,具体做法是安装到 /opt/mono-2.8.2 目录下。这样两个版本的 Mono 就可以共存了。
2015-07-28 07:19:12 634
原创 Arch Linux 安装配置备忘录
安装步骤基本上是按照“ArchWiki: Beginners' Guide(简体中文)”进行安装的。1. 硬件是 Lenovo S4700,Intel Pentium(R) D CPU 3.20GHz x 2,2GB 内存,250GB SATA 硬盘,nVidia GeForce G10 双头显卡。2. 将 archlinux-2012.09.07-dual.iso 刻录到
2015-07-28 07:14:11 845
原创 泰课在线逃离地球
这个是一款跑酷类型的游戏,在这款游戏里因为你触犯了禁率,上帝委派了一个警察追捕你,而你需要控制主角在三个赛道上进行移动,逃离警察的追捕。你可以使用跳跃,蹲下技能,在逃跑过程中你会获得金币,等你成为土豪之后,就可以在商店中购买一些药水,就可以开挂喽! 部分课时目录:课时1 逃离地球游戏游戏演示课时2 创建工程,引入和介绍素材课时3 创建森林环境的Prefa
2015-07-27 09:35:26 771
原创 PHPChina学院jQuery Mobile与Phone
第1节01_课程简介与开发环境搭建01_课程简介与开发环境搭建第2节02_页面、按钮与对话框02_页面、按钮与对话框第3节03_可折叠内容区域、导航栏和列表03_可折叠内容区域、导航栏和列表第4节04_与服务端数据交互04_与服务端数据交互第5节05_Phonegap 3.X Android 开发环境搭建05_Phonegap 3.X Andro
2015-07-27 09:32:04 619
原创 文本文件打印类库(C#)
我写了一个打印文本文件的类库,功能包括:打印预览、打印。打印时可以选择打印机,可以指定页码范围。调用方法非常简单:TextFilePrinter p = new TextFilePrinter(tbxFileName.Text);p.View(); // 打印预览p.Print(); // 打印文件使用 TextFilePrinter 类的以下构造函数可以指定打印时使用的字体:
2015-07-27 09:28:43 725
原创 通用的“关于本软件”对话框
我们知道,大多数软件都需要有一个“关于本软件”的对话框,用于告诉用户该软件的一些重要信息,最主要的是该软件的版本号。例如下图就是“锦书背单词”软件的“关于本软件”对话框: 现在让我们来写一个通用的“关于本软件”对话框,封装为 Skyiv.Common.AboutDialog 类。这样,我们在开发应用程序时只需要直接使用该类就行了,避免了重复劳动。测试程序 AboutDial
2015-07-27 09:25:50 1233
原创 在 Linux 操作系统中使用 Nginx 运行 ASP.NET 4
前言在我上一篇博文“在 Linux 操作系统中运行 ASP.NET 4 (下)”中讲述了如何在 openSUSE 11.3 操作系统中使用 Apache 2.2.15 运行 ASP.NET 4。虽然说 Apache 是目前最流行的 HTTP 服务器,但是 Nginx 作为高性能的 HTTP 和反向代理服务器,目前已经得到越来越广泛的应用。国外的网站如 Ohloh、GitHub、Sour
2015-07-27 09:22:02 1201
原创 数据库小工具整合版
我在2005年10月9日写的一篇文章“数据库小工具(C#)”中提到:在编写有关数据库方面的C#程序时,经常需要知道数据库的表中各字段的以下信息: 1. 用于OracleParameter(或SqlParameter,...)中的字段和属性的数据库特定的数据类型。 2. 其对应的.NET数据类型。当时,对各个不同的数据库是分别实现这个“数据库小工具”的。现在,让我们将
2015-07-27 09:17:18 937
原创 使用 C# 开发智能手机软件:推箱子(十三)
这是“使用 C# 开发智能手机软件:推箱子”系列文章的第十三篇。在这篇文章中,介绍 Window/TopicDlg.cs 源程序文件。这个源程序文件包含 TopicDlg 类,该类继承自 System.Windows.Forms.Form 类,表示推箱子的“帮助”对话框。如下图所示: 下面是 Window/TopicDlg.Designer.cs 源程序的部分代码:
2015-07-26 11:28:34 633
原创 使用 C# 开发智能手机软件:推箱子(八)
昨天,根据网友“mobile”的要求, 完成了推箱子的 Smartphone 版本,可点击这里下载。将解压缩后的 PushBoxStd.exe 文件放在 Pocket PC Phone 版本解压缩后得到 PushBox 目录下,然后再将整个 PushBox 目录一起拷贝到 Smartphone 上使用。由于 Smartphone 没有触摸屏,且支持的控件也比较少,所以该版本中取消了“菜单 ->
2015-07-26 11:16:43 451
原创 使用 C# 开发智能手机软件:推箱子(三)
这是“使用 C# 开发智能手机软件:推箱子”系列文章的第三篇。在这篇文章中,介绍 Common/Block.cs 源程序文件。 1 namespace Skyiv.Ben.PushBox.Common 2 { 3 /// 4 /// 基本单元格: 地 槽 墙 砖 箱子 工人 5 /// 6 static class Block
2015-07-26 11:12:33 714
原创 挖一挖C#中那些我们不常用的东西之系列(5)——FlagAttribute
说到FlagsAttribute,源自前几天看到了一小段代码,大概意思就是根据航班政策来返回哪些配送方式是否可用,根据这些是否可用来隐藏或者开启界面的相关配送方式,如果大家订过机票可能知道配送方式有很多种,比如“无需打印行程单(PJN)”,“机场自取(Airport)”,“市内配送(CND)”,“快递(EMS)”等等。根据上面的逻辑就可以知道,配送方式是有两种状态,
2015-07-25 09:06:55 550
原创 神奇的decimal,也许面试会问到哦~
这段时间忙的像狗一样,写博客的事情也就耽搁了,继续扯,为什么说decimal神奇呢,大家都知道decimal是基元类型,但是这个decimal类型在IL中居然没有相应的IL指令,也就是说CLR根本不认识decimal,全是编译器这一层在糊弄我们。 话不多说,看下最simple的例子,(加了点注释方便理解) 1 static void Main(s
2015-07-25 09:00:50 459
原创 简单看看这两个类 String和StringBuilder
我记得以前在园子里面讨论这两个类的文章有很多很多,并且还拿出了很多的测试报告,在什么情况下,谁比谁快,在什么情况下,该用谁不该用谁等等这些,我这里就不比较了,我就简单看看他们里面的内部实现,那就先看看String吧。 一:String类 说到String类,资料上都说是存在于堆上的一个不可CURD的一个不可变的字符集,当然看到这句话之后就想要看看是不是这样的,然后
2015-07-25 08:59:08 431
原创 看看C# 6.0中那些语法糖都干了些什么(中篇)
一:字符串嵌入值 我想String.Format方法就是化成灰大家都认识,比如下面代码:1 class Bird2 {3 private string Name = "swallow";4 5 public void Fly()6 {7 var result = string.
2015-07-25 08:54:40 611
原创 初探SQL Server CLR 集成
SqlServer 2005中,加入了很多新特性。对于开发人员(尤其是从事.NET开发的朋友)来讲,最值得一提的是对XML的支持以及CLR集成。当然,还有一些关于“高可用“(数据库集群/数据库镜像/日志传送等)的新特性,这些更适合DBA们学习和使用。当然不止我列举的这些,感兴趣的朋友,可以参考并学习webcast《sqlserver 2005盛宴系列》。相信很多朋友和我一样,一直很希望在s
2015-07-24 09:23:01 467
原创 SOA的浅析
曾今SOA的概念犹如今日“云计算、大数据”一样,被炒得火热,不少企业便纷纷响应,并宣称会拥抱和实施SOA。而事实上,业界出现了两种极端:一种是由于各类文章和书籍关于SOA的描述往往太过抽象,再加上各大厂商的呼吁,使得SOA往往显得“高大上”,令不少企业和架构师们望而却步。第二种恰好相反,有部分人却认为SOA无非是“新瓶装旧酒”。 个人理解,SOA在宏观上确实太复杂,因为它涉及到的不仅仅是技
2015-07-24 09:18:37 401
原创 WPF 基础到企业应用系列1——开篇有益
参考资料 提到参考资料,大家第一感觉就是MSDN,当然我也不例外,这个网站基本上是学习微软技术的首选站点,除了这个网站以外,我还参考了很多其他的社区和网站,基本上都在.NET 技术社区之我见(英文篇)做了介绍,比如CodeProject、CodePlex 、windowsclient、C# Corner等,除了这些网站还有一些国外技术专家blog。1. Pro
2015-07-22 11:30:16 927
原创 WPF基础到企业应用系列6——布局全接触
一. 摘要 首先很高兴这个系列能得到大家的关注和支持,这段时间一直在研究Windows Azure,所以暂缓了更新,同时也本着想把它写好、宁缺毋滥的精神,在速度上自然也就慢了下来,这篇文章拖拖拉拉也经历了十多天才发布出来(每天写一点),不过请大家放心,这个系列一定会继续写下去。由于自己才疏学浅且是对这些技术的使用总结和心得体会,错误之处在所难免,怀着技术交流的心态,在这里发表出来,所以希
2015-07-22 11:28:04 854
原创 提升方法
概念:提升方法是指将一个很多继承类都要用到的方法提升到基类中。 正文:提升方法是指将一个很多继承类都要用到的方法提升到基类中,这样就能减少代码量,同时让类的结构更清晰。如下代码所示,Turn方法在子类Car 和Motorcycle 都会用到,因为Vehicle 都会有这个方法,所以我们就会想到把它提到基类中。namespace LosTechies.DaysOfRefactor
2015-07-21 10:07:42 413
原创 使用委派代替继承
概念:本文中的“使用委派代替继承”是指在根本没有父子关系的类中使用继承是不合理的,可以用委派的方式来代替。 如下代码所示,Child 和Sanitation (公共设施)是没有逻辑上的父子关系,因为小孩不可能是一个公共设施吧!所以我们为了完成这个功能可以考虑使用委派的方式。namespace LosTechies.DaysOfRefactoring.ReplaceInherit
2015-07-21 10:03:25 1224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人