
C#基础
文章平均质量分 87
周公
周金桥,csdn网站ID是zhoufoxcn,网名周公,微信订阅号:zhoujinqiaoIT,2008-2012年度微软最有价值专家(MVP)。Csdn网站论坛专家,荣誉专家,曾任微软山西.net俱乐部技术负责人。在世界500强软件公司和上市民企担任管理岗位,有超过18年的开发及管理经验,擅长于程序性能和安全优化。2008独自编著《ASP.NET夜话》一书(2009年8月出版),2010合著《程序员的成长之路》一书(2011年5月出版)。
展开
-
C#中使用ref和out一点认识!
ref 通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.此外我们还有其他向方法传递参数的形式,引用(ref)和输出(out).有时,我们需要改变原来变量中的值,这时,我们可以向方法传递变量的引用,而不是变量的值.引用是一个变量,他可以访问原来变量的值,修改引用将修改原来变量的值.变量的值存储在内存中,可以创建一转载 2006-09-04 11:49:00 · 3081 阅读 · 3 评论 -
未能在"设计"视图中打开.在""块中,以不同方式将值括起来的解决方案汇总
如:Text= 如:Text= 如:Text=以下看些例子:">请看此图片注意此处imgURL为一图片文件名。有本书上是这样写的:若要绑定的表达式在运行时包含双引号或单引号,可能会导致误判的情况,因此可将数据邦定表达式适当地用单引号包围起来。",;>转载 2006-09-11 10:44:00 · 2177 阅读 · 1 评论 -
Java与C#执行效率之不科学比较
中午吃饭,闲来无事,分别用Java和C#实现了一个计算PI值的类,执行次数相同,为了避免一些偶然误差,姑设置了一个比较大的计算次数100000000,1亿次!Java代码如下:import java.util.*;public class CalcPI{ public static final int COUNT=100000000; public static void main(S原创 2006-09-15 14:48:00 · 12281 阅读 · 11 评论 -
从C#程序中调用非受管DLLs
从所周知,.NET已经渐渐成为一种技术时尚,那么C#很自然也成为一种编程时尚。如何利用浩如烟海的Win32 API以及以前所编写的 Win32 代码已经成为越来越多的C#程序员所关注的问题。本文将介绍如何从C#代码中调用非受管DLLs。如果某个函数是一个带有串类型(char*)输出参数的Win32 API 或者是DLL输出函数,那么从C#中如何调用它呢?对于输入参数的情形问题到不大,但如何转载 2006-09-22 11:49:00 · 3426 阅读 · 2 评论 -
大型软件公司.net面试题!一定得看(附答案)
1:a=10,b=15,在不用第三方变量的前提下,把a,b的值互换 2:已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组 3:请简述面向对象的多态的特性及意义! 4:session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法 5:对数据的并发采用什么办法进行处理较好。 6:已原创 2006-09-26 13:18:00 · 8790 阅读 · 9 评论 -
csc.exe编译参数的问题
/*------CalcPI.cs-----*/using System;public class CalcPI{ public const int Count=100000000; public static void Main(string[] args) { DateTime start=DateTime.Now; Random random=new Random(start.M原创 2006-09-26 17:50:00 · 2201 阅读 · 0 评论 -
Java与C#个人之比较
网上这方面的比较文章已经有不少了,不过大都是要么从很高的角度说的,要么就是从底层说的,本人就以自己这几年的编程经历中的感受,来谈谈自己的体会。相似性:Java和C#都是一门面向对象的语言,Java更多地借鉴了C++的优点,而摒弃了它的一些不太容易被人掌握的知识点(有些不能说是缺点),并且增加了一些自己的特点,而C#则是更多地借鉴了Java的优点,而增加了一些自己的特点。个人猜测,在Ja原创 2006-10-11 20:21:00 · 33212 阅读 · 17 评论 -
区别和认识C#中四个判等函数
.Net有四个判等函数?不少人看到这个标题,会对此感到怀疑。事实上确是如此,.Net提供了ReferenceEquals、静态Equals,具体类型的Equals以及==操作符这四个判等函数。但是这四个函数之间有细微的关系,改变其中一个函数的实现会影响到其他函数的操作结果。 首先要说的是Object.ReferenceEquals和Object.Equals这两个静态函数,对于它们俩转载 2006-10-09 10:21:00 · 2225 阅读 · 1 评论 -
把.NET程序部署到没有安装.NET Framwork的机器上
摘要本文讨论了如何使用Windows Installer技术发布.NET程序,以及如何使用native代码判断目标机器上是否安装有.NET Framework; 如果没有,将自动安装.NET Framework然后安装作者自己的.NET程序。目录 本文内容 制作自己的安装程序 发布.NET Framework 制作自己的nati转载 2006-10-22 17:25:00 · 2572 阅读 · 0 评论 -
如何在 Visual C# 中执行基本的文件 I/O
演示文件 I/O 操作loadTOCNode(2, summary);本文中的示例讲述基本的文件 I/O 操作。“分步示例”部分说明如何创建一个演示下列六种文件 I/O 操作的示例程序: • 读取文本文件 •转载 2006-10-23 10:23:00 · 3155 阅读 · 0 评论 -
C#文件路径操作总结
一、获取当前文件的路径1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 获取模块的完整路径,包括文件名。2. System.Environment.CurrentDirectory 获取和设置当前目录(该进程从中启动的目录)的完全限定目录。3. System.IO.Direct原创 2006-10-24 22:55:00 · 5990 阅读 · 0 评论 -
C#使用反射机制获取类信息
1.用反射动态创建类实例,并调用其公有成员函数。//新建一个类库项目,增加一个GetSum方法。using System; namespace ClassLibrary1{ public class Class1 { public Class1() { } public int GetSum(int x,转载 2006-10-31 10:47:00 · 4374 阅读 · 0 评论 -
垃圾回收算法历程
拓荒时代国内的程序员大多是在 Java 语言中第一次感受到垃圾收集技术的巨大魅力的,许多人也因此把 Java 和垃圾收集看成了密不可分的整体。但事实上,垃圾收集技术早在 Java 语言问世前 30 多年就已经发展和成熟起来了, Java 语言所做的不过是把这项神奇的技术带到了广大程序员身边而已。 如果一定要为垃圾收集技术找一个孪生兄弟,那么, Lisp 语言才是当之无愧的人选。 1960 年前转载 2006-11-04 09:49:00 · 4965 阅读 · 1 评论 -
C#中简单自行产生事件并处理实例
using System;namespace DeleAndEvent...{ /**//// /// 一个产生自定义事件并自行处理的程序 /// class Demo ...{ /**//// /// 应用程序的主入口点。 /// [STAThread] static void Mai原创 2006-11-14 11:06:00 · 2430 阅读 · 0 评论 -
.net学习资源集合
名称:快速入门地址:http://chs.gotdotnet.com/quickstart/描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例程序,直接在网上查看此示例即看。名称:微软官方.NET指导站点地址:http://www.gotdotnet.com/描述:上面的站点是本站的一个子站点,本站点提供微软.NET官方信息,并且有大量的用户源转载 2006-11-16 13:04:00 · 3149 阅读 · 1 评论 -
部署安装时写入SQLSERVER和Web.config
在.NET平台下,部署 Web 解决方案是比较方便的。我们可以利用Visual Studio.NET 2003添加一个WEB安装项目,在部署的“文件系统编辑器”中添加项目的主输出和内容文件,非常简易地完成安装程序的制作。但是,这样制作的安装程序,只是将Web页和ASP.NET程序编译的DLL文件安装到目标机器的IIS目录,对于一般的应用程序是可以的(比如用Access数据库,可以一起打包到安装原创 2006-11-22 00:17:00 · 3558 阅读 · 0 评论 -
Java对战.NET,战争与和平的游戏
在软件世界里,Java与.NET无疑是两个旗鼓相当的对手,一再上演着一出又一出你来我往、拼力争夺的好戏。在这种争夺的过程中,有受益者,也有牺牲者。平心静气地想一想,微软和Sun公司都是兵器的制造者,软件人员才是斗士,用户们只好去做受益者或是牺牲品。 真的有那么凄惨吗?事实上,和平的曙光已经出现了。 战争与和平 很多人认为,Java和.NET不是殊途同归吗!为什么又会烽烟缭绕呢?当然是世原创 2006-11-25 13:20:00 · 2329 阅读 · 0 评论 -
JAVA 与.NET 在前途上面的比较
JAVA 与.NET JAVA语言发明已有10年历史,在IBM、SUN等公司的推动下已经比较稳定与成熟,获得了大规模企业的普遍应用。时至今日,J2EE已经发展成为一个覆盖面广,效率高,易用性强的技术平台,吸引了400万开发者,在网络技术遍及全球的的今天,更有17.5亿台设备使用JAVA技术.同时, Mustang版本的J2EE正在紧锣密鼓的开发当中,按照惯例,每2年将发布一个全新的J2SE版本原创 2006-11-25 13:21:00 · 6871 阅读 · 1 评论 -
JAVA 和.NET在安全功能的比较
本文根据Denis Piliptchouk的文章翻译、摘录而来,有些术语翻译不太好理解,还请参考原文。第一部分 安全配置和代码封装安全配置两个平台的配置都是通过XML或纯文本文件,两个平台最大的区别在于处理安全配置体系的方式不同。在.NET平台,有图形接口和命令行二种方式来修改安全配置参数。Mscorcfg.msc是图形接口方式,Caspol.exe提供了命令行方式,适用于批处理或翻译 2006-11-25 13:24:00 · 6207 阅读 · 4 评论 -
.net俱乐部12月10日活动ppt及程序代码
这次活动主要为了吸引广大学生或者.net爱好者的兴趣而编写的一个图片浏览器,实现了“上一张”、“下一张”、“最后一张”、“第一张”的定位功能,并且使用了两种方式(利用PictureBox控件和绘制)来显示图片,还演示了如何将编译后的程序制作成安装包。部分关键代码: // 初始化图片装载路径 private void InitPath() ...原创 2006-12-12 20:14:00 · 2031 阅读 · 0 评论 -
21种代码的“坏味道”
1.Duplicated Code(代码重复) 代码重复几乎是最常见的异味了。他也是Refactoring 的主要目标之一。代码重复往往来自于copy-and-paste 的编程风格。与他相对应OAOO 是一个好系统的重要标志(请参见我的duplicated code 一文:http://www.erptao.org/download.php?op=viewsdownload&sid=6)。 2.翻译 2006-12-25 22:12:00 · 5928 阅读 · 0 评论 -
一道简单而又容易出错的题目
闲话少说,先看代码: class clsArray2D ...{ private void Print(object obj) ...{ Console.WriteLine("object"); } private void Print(string str) ...{原创 2007-02-06 10:16:00 · 2806 阅读 · 1 评论 -
C# 编码规范和编程好习惯
谁都会写代码!几个月的编程经验可以让你写出“可运行应用程序”。让它可运行容易,但是以最有效率的方式编码就需要下更多的功夫!要知道,大多数程序员在写“可运行代码”,而不是“高效代码”。你想成为你们公司”最尊贵的专业人员“吗?写”高效代码“是一项艺术,你必须学习和实践它。命名惯例和规范注记 : Pascal 大小写形式-所有单词第一个字母大写,其他字母小写。Camel 大小写形式-除了第一原创 2007-02-07 10:06:00 · 4263 阅读 · 0 评论 -
数码照片助手
开发背景:为了熟悉一下在vs.net2005下进行WinForm开发,同时也是由于整理电脑时发现一些数码相机拍摄的照片尺寸过大,查看不方便,占用空间大,尽管已经有相关的图片调整软件,都有些不太尽我意的地方,于是想到了自己动手 开发一个。选择调整文件界面设置调整尺寸界面设置保存路径界面调整状态界面关于我们说明特点:1、可以批量调整图片大小。2、可以设定过滤条件,只调整符合尺寸的图片。3、可以以以下三原创 2007-01-04 19:42:00 · 3009 阅读 · 5 评论 -
用C#实现DES加密解密封装
using System;using System.Security.Cryptography;using System.Text;using System.IO;namespace Common<img id="_104_2343_Open_Image" onclick="function onclick(){this.style.display=none; document.g原创 2007-01-29 15:35:00 · 18755 阅读 · 10 评论 -
用C#实现MD5算法
代码如下:using System;using System.Text;using System.Security.Cryptography;namespace Common{ /// /// 一个实现MD5散列字符串的类 /// 作者:周公 /// 日期:2007 /// public sealed clas原创 2007-01-29 15:38:00 · 12178 阅读 · 7 评论 -
谈谈C#中的三个关键词new , virtual , override
C#支持单继承,说到继承就不得不说new,virtual和override这三个关键词,灵活正确的使用这三个关键词,可以使程序结构更加清晰,代码重用性更高。以下是msdn中对new,virtual和override的定义: 使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。原创 2007-01-31 10:57:00 · 5107 阅读 · 7 评论 -
C#和Java中二维数组的区别
本人是从Java转向C#的,由于工作需要,感觉C#和Java的很多类似性,所以在使用C#的时候总喜欢套用Java的,因为他们太像了,然而今天却碰了一鼻子灰,原因就在使用二维数组上。在Java中使用二维数组可以如下代码:public class Array2D...{ public static void main(String[] args)...{ int myI原创 2007-02-01 12:20:00 · 3802 阅读 · 6 评论 -
用C#获取CPU编号、硬盘编号等系统有关环境、属性
如果利用C#获取系统有关环境和属性,这个也是在网上问得比较多的问题,不过大部分只有提问没有回答,最近正好想做有关方面的东西,整理了一下,提供给大家,希望能给大家提供参考意见:首先需要定义几个结构(struct) ,便于DllImport作为返回参数调用。以下是代码:CpuInfo.csusing System;using System.Configuration;using System.原创 2007-03-20 14:36:00 · 14290 阅读 · 34 评论 -
NET工程师求职面试必杀技
一、.NET框架 开发人员应该熟悉.NET FrameWork体系结构和基本原理,熟悉CLR(公共语言运行时)和MSIL(中间语言),熟悉.NET框架中的委托、线程、序列化、集合、垃圾回收机制、反射等内容。 二、面向对象软件开发 开发人员应该熟悉面向对象软件开发(OOP)基本概念,熟悉面向对象软件开发中的类、继承、封装、多态等概念,具备良好的面向对象软件开发思想和设计原则。 不论是采用何种软件开发原创 2007-03-27 13:48:00 · 5759 阅读 · 5 评论 -
.NET架构与模式探索
什么是架构软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,以下是一些主流的标准观点。ANSI/IEEE 610.12-1990软件工程标准词汇对于体系结构定义是:“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构以及知道上述内容设计与演化转载 2007-04-01 19:03:00 · 2557 阅读 · 0 评论 -
.net中所用到的编码名称和对应的代码页
在.net开发中常用到Encoding.GetEncoding(int codeage)或者Encoding.GetEncoding(string name)来获取一个Encoding,通常大部分人是记不住这些codepage(代码页)和name(名称)的,本人也曾经有过这样的经历,现在整理出来供大家参考。原创 2007-04-03 15:08:00 · 3849 阅读 · 0 评论 -
rundll32.exe命令使用大全
Rundll32.exe是什幺?顾名思意,“执行32位的DLL文件”。它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。如果看到系统中有多个Rundll32.exe,不必惊慌,这证明用Rundll32.exe启动了多少个的DLL文件。当然,这些Rundll32.exe执行的DLL文件是什幺,我们都可以从系原创 2007-07-05 10:40:00 · 3807 阅读 · 1 评论 -
抽象类和接口的关系对比
抽象类抽象类主要用来定义一些抽象的属性和方法,留待子类根据自己的情况实现这些属性和方法抽象类不能生成实例,即不能new一个抽象类的实例抽象类可以被继承,除非继承该抽象类的子类仍声明为抽象的,否则就必须实现这个抽象类的所有抽象属性和方法一个类只能继承一个抽象类,如果需要实现多个类的抽象方法,必须使用接口子类与抽象类是is关系接口接口主要用来定义一些抽象的属性和方法,留待实现类根据自己的情况实现这些属原创 2007-04-06 11:42:00 · 4067 阅读 · 2 评论 -
vs2005中文RTM版的代码段管理器
VS2005中提供了代码段的便捷功能,敲入一个关键字,当其在下拉列表中显示图标为一个文件的时候,敲两下TAB键,便能快速的获取这个代码片段,剩下所需做的就是移动到对应的位置,填入参数性质的东西替换预留的位置。当然大多数常见的代码段,微软都为我们提前准备了。例如:if,for ……但是,有时候我们也会遇到重复写两部分或以上数量代码的时候,那么就需要定义我们自己的代码段了。默认情况下界面上是没有的原创 2007-04-13 10:48:00 · 3785 阅读 · 1 评论 -
接口(interface)原来是可以被继承(extends)的
在传统的教科书或者书籍中都会灌输我们一个观念,那就是抽象类可以被继承(extends),接口可以被实现(implements),但是抽象类不能被实现(implements),接口也不能被继承(extends),但是今天这个观点有些地方被颠覆了。抽象类可以被继承(extends),接口可以被实现(implements),但是抽象类不能被实现(implements),这三个观点确实没有什么问题,但原创 2007-07-20 10:19:00 · 21750 阅读 · 4 评论 -
C#小技巧系列之二:获取系统所有服务信息
说明:本人准备写一些C#有关的小技巧系列文章,这些文章含金量并不高,代码难度不大,不过因为问的次数比较多,从而导致本人决定用自己所知的方式写这一系列文章,可以看做“趣味导学”系列吧。这是一个获取系统所有服务的程序,为了简化程序,代码仍以控制台形式提供,大家可以另外封装自己希望的功能。核心代码: using System;using System.Collections.Gene原创 2007-05-07 22:00:00 · 3585 阅读 · 0 评论 -
C#小技巧系列之一:获取系统有关信息
说明:本人准备写一些C#有关的小技巧系列文章,这些文章含金量并不高,代码难度不大,不过因为问的次数比较多,从而导致本人决定用自己所知的方式写这一系列文章,可以看做“趣味导学”系列吧。 要展示的第一个例子就是获取系统磁盘情况和操作系统名称,获取的信息包括本机上所有磁盘盘符,磁盘类型(软驱、硬盘分区、光盘),磁盘文件类型(FAT32/NSFS),磁盘空间总大小及剩余空间大小等。为了方便查看代码,用原创 2007-05-07 21:32:00 · 2252 阅读 · 0 评论 -
C#小技巧系列之三:获取系统进程信息
说明:本人准备写一些C#有关的小技巧系列文章,这些文章含金量并不高,代码难度不大,不过因为问的次数比较多,从而导致本人决定用自己所知的方式写这一系列文章,可以看做“趣味导学”系列吧。这是一个获取系统所有服务的程序,为了简化程序,代码仍以控制台形式提供,大家可以另外封装自己希望的功能。核心代码:using System;using System.Diagnostics;using S原创 2007-05-15 11:17:00 · 3747 阅读 · 0 评论 -
IL系列文章之一:Say Hello to IL
.net出现这么久了,很多人已经能够熟练的运用C#进行软件开发,也有一些像我这样的人喜欢去研究一下.net的内部运行机制。我这里来谈谈IL(Intermediate Language),虽然我们不太可能直接用IL来开发软件,但是IL的确是了解.net内部机制的一道大门。 Visual Studio.NET给我们提供了两个与IL有关的工具ilasm和ildasm,他们是IL编译器和IL转载 2007-05-21 22:46:00 · 1457 阅读 · 1 评论