Google [站内搜索]

预览模式: 普通 | 列表

C#统计数组所有元素出现次数

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 6614

C#图片格式转换

两行代码完成转换:

using (Bitmap bmp = new Bitmap(@"E:\test.jpg"))
{
    bmp.Save(@"E:\test.bmp", ImageFormat.Bmp);

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 5280
我们已经讨论过,处理一个占用了非托管资源对象是很重要的。现在是时候来讨论如何写代码来管理这些类占用的非内存资源了。一个标准的模式就是利用.Net框架提供的方法处理非内存资源。你的用户也希望你遵守这个标准的模式。也就是通过实现IDisposable接口来释放非托管的资源,当然是在用户记得调用它的时候,但如果用户忘记了,析构函数也会被动的执行。它是和垃圾回收器一起工作的,确保在一些必要时候,你的对象只会受到因析构函数而造成的性能损失。这正是管理非托管资源的好方法,因此有必要彻底的弄明白它。

处在类继承关系中顶层的基类应该实现IDisposable接口来释放资源。这个类型也应该添加一个析构函数,做为最后的被动机制。这两个方法都应该是用虚方法来释放资源,这样可以让它的派生类重载这个函数来释放它们自己的资源。派生类只有在它自己须要释放资源时才重载这个函数,并且一定要记得调用基类的方法。

开始时,如果你的类使用了非内存资源,则一定得有一个析构函数。你不能指望你的用户总是记得调用Dispose方法,否则当他们忘记时,你会丢失一些资源。这或许是因为他们没有调用Dispose的错误,但你也有责任。唯一可以确保非内存资源可以恰当释放的方法就是创建一个析构函数。所以,添加一个析构函数吧!

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3870

C#中文和UNICODE字符转换方法

//中文转为UNICODE字符
string str = "木子屋-http://www.mzwu.com/";
string outStr = "";
string tmp = "";
if (!string.IsNullOrEmpty(str))

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 7694

FileStream读写文件示例

//引用:
//using System.Text;
//using System.IO;

/// <summary>

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 5700

BOM简介

BOM全称为byte order mark,它是UTF编码方案里用于标识编码的标准标记。它的实现是在文本文件的最开始增加特定的几个字节,用于说明该文本文件使用的编码方式。以下是各种UTF编码的ROM:



查看BOM最常用的方式是使用UltraEdit打开文本文件,按Ctrl+H切换到十六进制编辑器,查看其最开始的几个字节:

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4004

Effective C# 原则17:装箱和拆箱的最小化

值类型是数据的容器,它们不具备多态性。另一方面就是说,.Net框架被设计成单一继承的引用类型,System.Object,在整个继承关系中做为根对象存在。设计这两种类型的目的是截然不同的,.Net框架使用了装箱与拆箱来链接两种不同类型的数据。装箱是把一个值类型数据放置在一个无类型的引用对象上,从而使一个值类型在须要时可以当成引用类型来使用。拆箱则是额外的从“箱”上拷贝一份值类型数据。装箱和拆箱可以让你在须要使用System.Object对象的地方使用值类型数据。但装箱与拆箱操作却是性能的强盗,在些时候装箱与拆箱会产生一些临时对象,它会导致程序存在一些隐藏的BUG。应该尽可能的避免使用装箱与拆箱。

装箱可以把一个值类型数据转化成一个引用类型,一个新的引用对象在堆上创建,它就是这个“箱子”,值类型的数据就在这个引用类型中存储了一份拷贝。参见图2.3,演示了装箱的对象是如何访问和存储的。箱子中包含一份这个值类型对象的拷贝,并且复制实现了已经装箱对象的接口。当你想从这个箱子中取回任何内容时,一个值类型数据的拷贝会被创建并返回。这就是装箱与拆箱的关键性概念:对象的一个拷贝存放到箱子中,而不管何时你再访问这个箱子时,另一个拷贝又会被创建。

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4831

Effective C# 原则16:垃圾最小化

垃圾回收器对内存管理表现的非常出色,并且它以非常高效的方法移除不再使用的对象。但不管你怎样看它,申请和释放一个基于堆内存的对象总比申请和释放一个不基于堆内存的对象要花上更多的处理器时间。你可以给出一些严重的性能问题,例如应用程序在某个方法内分配过量的引用对象。

你不应该让垃圾回收器超负荷的工作,为了程序的效率,你可以使用一些简单的技巧来减少垃圾回收器的工作。所有的引用类型,即使是局部变量,都是在堆上分配的。所有引用类型的局部变量在函数退出后马上成为垃圾,一个最常见的“垃圾”做法就是申请一个Windows的画图句柄:

protected override void OnPaint( PaintEventArgs e )

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 17354

魔秀手机主题制作分析

相关页面

主页面:theme.html?sid=
设置页面:theme-setting.html?sid=&path=&HJD=
预览页面:theme-preview.html?sid=&path=&sceneId=&HJD=

查看更多...

分类:程序修改 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 6646

DataGridView添加右键菜单等技巧汇总

1.只显示自定义列
dataGridView1.AutoGenerateColumns = false;//只显示自定义列
dataGridView1.RowHeadersVisible = false; //去掉最左边空白列

2.禁止调整行列大小
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;//禁止手工调整标题行高度

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 15318