C# ToString常用技巧总结
摘要:C# ToString常用技巧总结ToString是在开发中最常用的操作,其作用是将其它类型以字符串类型表示。例如:int i=2;i.ToString() //”2″Object o = new Object();o.ToString(); // 返回对象类型 System.Object但是ToString也并非就这么简单。因为ToString实现自Object类,而Object类是一切类的基类。其它的类继承自Object,自然也就实现了ToString方法。但是也可以重写ToString方法。这也就衍生了其它的使用。如果我们运用合理的话,将会使我们的开发非常的方便。例如在开发中常用到的:一
阅读全文
对C# 中Readonly的再认识
摘要:C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景。工作原理 readonly为运行时常量,程序运行时进行赋值,赋值完成后便无法更改,因此也有人称其为只读变量。 const为编译时常量,程序编译时将对常量值进行解析,并将所有常量引用替换为相应值。 下面声明两个常量:publicstaticreadonlyintA=2;//A为运行时常量publicconstintB=3;//B为编译时常量下面的表达式:intC=A+B; 经过编译后与下面的形式等价:intC=A+3; 可以看到,其中的const常量..
阅读全文
C# 编写简易 ASP.NET Web 服务器
摘要:C# 编写简易 ASP.NET Web 服务器你是否有过这样的需求——想运行 ASP.NET 程序,又不想安装 IIS 或者 Visual Studio?我想如果你经常编写 ASP.NET 程序的话,应该或多或少都会碰到这种情况。除了使用 IIS 和 VS,我们还有哪些方式可以运行 ASP.NET 程序呢,自己写一个支持 ASP.NET 的 Web 服务器怎么样?NO NO NO,如果你只是想找个这样的工具的话,那完全没必要,我们知道使用 VS 可以运行 ASP.NET 程序,那么我们就可以找出 VS 所调用的程序,将其拷贝到没有 VS 和 IIS 的环境中运行,就能运行 ASP.NET 程序
阅读全文
C# 操作 Excel 常见问题收集和整理
摘要:C# 操作 Excel 常见问题收集和整理(定期更新,欢迎交流)经常会有项目需要把表格导出为 Excel 文件,或者是导入一份 Excel 来操作,那么如何在 C# 中操作 Excel 文件成了一个最基本的问题。做开发这几年来,陆陆续续也接触过这样的需求,但因为不频繁,所以经常是遇到问题再去网上搜。最近的一个项目,要导出的这个 Excel 涉及了很多比较偏僻的操作,所以决定在这里开一篇文章,专门用来收集和整理使用到的代码,以及一些技巧。如果各位看官有一些自己的心得,或者有更好的方案,也欢迎交流。我会时不时更新一下。0. 使用之前在写代码之前,我们需要先添加引用,在程序集–扩展里面:Micros
阅读全文
线程简单基本操作
摘要:线程简单基本操作前传这几天来到上海,身心疲惫,而且烧钱一大把,吃饭、住房、生活用品......,我那个心痛,昨天终于安顿下来,今天是到公司报道的第一天,没做什么,一直在会议室,到了半下午的时候发给我们入职信息表,说合同现在在总部需要寄过来填写等等,然后这一天就这么过去了。还有且说今天来的实习生10个就有8个本科生,压力山大、、、好吧,废话少说,听多了影响心情与激情,哈哈哈哈哈简单的线程顺便说一句,小弟是学习.net的,所以对C#比较了解些,所以后面的介绍皆以C#来举例Main函数我们都知道,在任何一个程序中一般都有一个主函数(在C中是main,在C#中是Main),这就是熟称的程序入口,所有线
阅读全文
参数的那些事儿
摘要:不得不聊的关于方法的参数的那些事儿很多朋友在看了这个标题之后,可能会以不屑的眼神看着我说,"去,我xx年的编程经验,难道方法(函数)还有什么不知道的么?你可要记住,从我开始学编程的那1天起就已经开始每天都在写方法了." 当然我不会从最基本的说起,更多的我希望说说我自己的的理解以及原理,所以这篇文章仅仅是个人总结,可能会由于个人知识面比较窄的原因会存在一些瑕疵,请大家不吝指教.好了,那我们就开始吧. a. 为什么定义了形参,就一定要传递实参? 谁都知道,如果1个方法定义了参数,那么我们在调用这个方法的时候,就必须要为这个方法的参数赋值.比如下面这样. 如果不传递的话,谁都知道
阅读全文
数据结构中的棧在C#中的实现
摘要:数据结构中的棧在C#中的实现一、大致学习棧是一种面向表的数据结构,棧中的数据只能在标的某一短进行添加和删除操作,是一种典型的(LIFO)数据结构。现实生活中的理解:自助餐厅的盘子堆,人们总是从顶部取走盘子,当洗碗工把洗好的盘子放回盘子堆的时候也是放在盘子堆的顶部。Stack类实现棧:Stack number=new Stack();Stack类是ICollection接口的一个实现(foreach),它代表了一个LIFO群集或一个棧,在.NET中作为循环缓冲来实现的,这使得能动态地分配进栈数据项的空间;Stack构造器方法,默认的构造器实例化的是一个具有10个数值初始容量的空栈,每当棧达到满容
阅读全文
开源Word读写组件DocX 的深入研究和问题总结
摘要:开源Word读写组件DocX 的深入研究和问题总结一. 前言 前两天看到了asxinyu大神的【原创】开源Word读写组件DocX介绍与入门,正好我也有类似的自动生成word文档得需求,于是便仔细的研究了这个DocX。 我也把它融入到我的项目当中并进行了实践。工具果然牛叉,但也有一些问题,后边一并列出来。 二. DocX的基本原理 Word有一个开放的文件格式,叫做Office Open XML。Office 从2007版本开始用它。它的基本方法是将文本和格式存储成xml,把其他资源(图片等)存储成独立文件,并将其进行Zip压缩。这样的好处是它的体积远比03版本的office文件小得多,但也造
阅读全文
C#中的结构体与类的区别
摘要:C#中的结构体与类的区别经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点.1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字struct.在语法上其实类和结构有着很多相似的地方. 定义类的语法 1 class Person 2 { 3 private string name; 4 private int age; 5 6 public void SayHi() 7 { 8 Console.WriteLine("Hello,My Name is "+this...
阅读全文
Winform 让跨线程访问变得更简单
摘要:Winform 让跨线程访问变得更简单前言 由于多线程可能导致对控件访问的不一致,导致出现问题。C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出异常。近期在项目中碰到这个问题,首先想到的是,关闭跨线程检查,因为做的Winform没有多么复杂,图省事就直接这样做了,之后又出了一点点问题,还是必需通过委托的方式来实现。资源下载 测试示例解决跨线程访问: 网上的资料很多,这里直接摘抄。 1、关闭跨线程检查。 2、通过委托的方式,在控件的线程上执行。 具体的代码如下:using System;using System.Threading...
阅读全文
C#下丢掉.asmx文件的WebService的实现
摘要:C#下丢掉.asmx文件的WebService的实现我在用.net实现Webservice的时候发现需要一个没有任何用处的.asmx文件,但是却没法删除,这两天我实现一个通过接口时想实现dll直接部署,不需要弄个.asmx文件.翻阅了很多,最后在Spring.net里面得到了启示.我要实现的方式是直接在httpHandlers中配置 然后通过就可以直接部署,特别适合进行二次开发,嵌入式开始什么的.具体的实现如下:先需需要通过继承反射实现一个c#的程序集封装的调用(很讨厌C#的程序集封装,讨嫌的要死) /// /// WebService处理类. /// [Perm...
阅读全文
反射发出动态类型介绍(上)
摘要:反射发出动态类型介绍(上)引言动态类型(Dynamic Types)可以向框架开发者提供高效的抽象编程模型,而不会产生通常因抽象而导致的性能损失。通过对面向接口编程和工厂设计模式的使用,可以开发一个框架,它既享有抽象编程模型通用的好处,同时也兼具硬编码逻辑的性能优势。动态类型工厂使用程序基本元数据,确定以最佳的方式在运行时建立新类型。类代码被直接“发出”到内存中的程序集中,无需通过.NET语言特定的编译器编译。类一旦被“发出”,它就已经被CLR“烘烤”好并随时可供应用程序使用了。这种方式看似只允许我们创建具有硬编码逻辑的类,但其实是非常灵活的,因为你可以发出很多类,只要让所有的类实现相同的接口
阅读全文
从使用层面上了解委托和事件的区别
摘要:从使用层面上了解委托和事件的区别从本篇文章中,我们将从代码层面知道委托和事件的差异和用处,并且我们不会用猫和老鼠之类奇怪的比喻来混淆大家。首先,我们知道委托和事件都可以用来调用跟自己方法签名一样的方法。容易混淆大家的地方大多在于这两者之间的区别。从我们使用委托delegate和事件event上的主要有两大区别(如表1所示)。 表1 委托和事件的区别序号区别委托事件1是否可以使用=来赋值是否2是否可以在类外部进行调用是否3是否是一个类型是否,事件修饰的是一个对象--参考MSDN上关于委托和事件的定义。一个例子我们将创建两个类ClassA和ClassB,这两个类都很简单,只有一个方法,并且这两个类
阅读全文
C# Winform 涉及的拖放操作总结
摘要:C# Winform 涉及的拖放操作总结在开发程序的时候,为了提高用户的使用体验,或满足相关用户的功能,总是离不开拖放功能。而本文是总结winform下的常用拖放操作。主要有1.textbox接受拖放的文件2.listbox允许用户自定义排序3.listbox之间的拖放4.控件的拖放5.console的拖放问题用户在进行拖放操作时,经过的步骤大体如下:例如将A中的数据拖放的B中鼠标点击A中的数据(MouseDown)->鼠标移动(MouseMove)->出源数据边界,即出A(DragLeave)->进入目标边界,进入B(DragEnter)->在B中移动,选择放数据的位
阅读全文
.net下灰度模式图像
摘要:.net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。Posted on2013-07-13 14:23Imageshop阅读(232) 评论(0)编辑收藏 在.net下,如果你加载了一副8位的灰度图像,然后想向其中绘制一些线条、或者填充一些矩形、椭圆等,都需要通过Grahpics.FromImage创建Grahphics对象,而此时会出现:无法从带有索引像素格式的图像创建graphics对象 这个错误,让我们的后续工作无法完成。本文叙述了一种另外的方法来实现它。 我们通过Reflector发编译.net framewo...
阅读全文
C#程序以管理员权限运行
摘要:C#程序以管理员权限运行在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录、系统注册表等可能影响系统正常运行的设置进行写操作。这个机制大大增强了系统的安全性,但对应用程序开发者来说,我们不能强迫用户去关闭UAC,但有时我们开发的应用程序又需要以 Administrator 的方式运行,如何实现这样的功能呢?下面演示 C# 程序如何实现提示用户以管理员权限运行。本例以WinForm程序演示,新建一项目生成后进行相应修改:方法一:通过 System.Diagno
阅读全文
了解线程的属性及方法
摘要:了解线程的属性及方法写在前面的话前一篇随笔我们主要介绍了了多线程相关的概念、多线程的其利与弊以及一个基本的多线程例子。那些都算是些常识性的东西,接下来介绍介绍线程相关的属性和方法吧!其实这篇随笔貌似可有可无,因为MSDN确实是个好东西,它告诉我们的着实太多了,其实这篇随笔主要就是参考MSDN然后进行代码实践而已。如果你觉得这些东西觉得木有必要,认为查MSDN就可以那就直接进入第三节吧(7.12更新),从第三节开始小弟就开始实践操作多线程,感兴趣的进噢!关于Thread的属性首先我先来一张图吧,此图来自MSDN,介绍的是Thread所有属性:接下来我写一个简单例子来看看(以下实践和总结全为本人亲
阅读全文
大话数据结构-图
摘要:大话数据结构-图文章知识点来至于大话数据结构里边章节知识, 这篇主要介绍图在计算机中存储形式, 以及在某些算法领域中对图的相关应用。本篇涉及到的知识点也比较多在图的遍历中介绍了深度优先遍历、广度优先遍历;在最小生成树节介绍了普利姆算法和克鲁斯卡尔算法;最短路径中介绍了迪杰斯特拉算法、佛洛依德算法;本篇后边还介绍了拓扑排序以及关键路径等知识点。 本篇对算法进行了描述和实现, 在实现代码的同时添加了流程图。相关代码源码请查看文章最后。本篇最后的算法描述和流程图以及代码实现是重点,如果对本篇感兴趣一定要通过该部分来巩固数据机构。图1 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示
阅读全文
c# 项目带皮肤一起打包发布解决办法
摘要:c# 项目带皮肤一起打包发布解决办法前提:c#语言 winform应用程序 皮肤为IrisSkin2目标:在打包发布独立应用 程序时,将皮肤也一起打包发布,实现程序在其它机子安装时,皮肤效果依然存在。解决方案:1.大部分IrisSkin2第三方皮肤控件的应用办法都是:在引用---添加引用-----IrisSkin2.dll,将IrisSkin2.dll文件和skin文件(里面都是.ssk的皮肤文件)都放到bin下面的debug文件里,然后在主窗口添加代码:Sunisoft.IrisSkin.SkinEngine se = null;(这句代码添加在主窗口程序的类下面,暨不添加在任何方法中)(.
阅读全文
关于多线程学习总结(一) 基本概念了解
摘要:关于多线程学习总结(一) 基本概念了解写在最前面经常看到一些招聘上要求应聘者必须熟练掌握多线程,而对于我这个着实的菜鸟来说多线程这个概念虽然经常听到,但是在实际操作中用的比较少,而且了解的也比较浅显,所以乘着这休息的几天天好好的学习学习,补上这方面的知识。PS:本文只是多线程这方面学习的记录,并不是对多线程的深入探讨,如果你和我一样对多线程不甚了解,可以和我一起共同学习噢。也欢迎各位大神批评指正,小弟不胜感激!相关概念学习了解对于概念这个东东,我历来都不喜欢记,也老是记不住,我更愿意结合概念和实际操作来让它给我留下印象。但是学习前我们还是来看看几个概念,让它首先在我们脑海留下点影子再说。进程:
阅读全文