文章分类 -  C#

1 2 3 下一页
Entity Framework实现数据库表的温和修改
摘要:可以通过设定Database.SetInitializer(new DropCreateDatabaseIfModelChanges())的方式来指定数据模型改变,即删库重新建表,这种方式比较暴力,对于数据比较重要的情况下不适用。EF还提供了一个温和的表结构修改,被称之为Migration1. 安装Nuget; 2. 检索EF,并安装; 3. 安装了Nuget后会在Tools菜单下生成“Libirary Package Manager”, 选择其内部“Package Manager Console”,将会在VS的底部弹出命令行窗口;4. 敲入Enable-Migrations(大小写不敏感,同 阅读全文
posted @ 2014-02-07 18:05 RIVERSPIRIT 阅读(198) 评论(0) 推荐(0)
字符串相似度算法(编辑距离算法 Levenshtein Distance)
摘要:在搞验证码识别的时候需要比较字符代码的相似度用到“编辑距离算法”,关于原理和C#实现做个记录。据百度百科介绍:编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越是不同。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转成sitting: sitten (k→s) sittin (e→i) sitting (→g) 俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。因此也叫Levenshtein... 阅读全文
posted @ 2013-11-25 15:21 RIVERSPIRIT 阅读(255) 评论(0) 推荐(0)
AutoResetEvent和ManualResetEvent的异同介绍
摘要:一般情况下多线程总是无序的,要使其按照一定的顺序执行(比如B线程必须在A线程执行完毕之后才执行)。可以采用调用Thread的Join方式,也可以使用“信号”类的方式完成此任务。常见的信号类有AutoResetEvent和ManualResetEvent。一般情况下,可以给它们的默认构造函数传入false,这就表示当前初始化该信号源准备发送信号,当调用了WaitOne方法的时候把当前的线程阻塞,直到接受到信号为止(发送信号使用Set函数)。下面是一个例子:Code highlighting produced by Actipro CodeHighlighter (freeware)http:// 阅读全文
posted @ 2013-04-02 10:52 RIVERSPIRIT 阅读(154) 评论(0) 推荐(0)
.NET性能优化方面的总结
摘要:1. C#语言方面1.1 垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。 1.1.1 避免不必要的对象创建 由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情形。 1.1.1.1 避免循环创建对象 ★ 如果对象并不会随每次循环而改变状态,那么在循环中反复创建对象将带来性能损耗。高效的做法是将对象提到循环外面创建。 1.1.1.2 在需要逻辑分支中创建对象 如果对象只在某些逻辑分支中才被用到,那么应只在该逻辑分支中创建对象。 1.1.1.3 使用常量避免创建对象 程序中不应出现 阅读全文
posted @ 2012-05-17 15:48 RIVERSPIRIT 阅读(274) 评论(0) 推荐(1)
[转]尾递归与Continuation
摘要:这几天恰好和朋友谈起了递归,忽然发现不少朋友对于“尾递归”的概念比较模糊,网上搜索一番也没有发现讲解地完整详细的资料,于是写了这么一篇文章,权当一次互联网资料的补充。:P递归与尾递归关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向链表的长度:public class Node{ public Node(int value, Node next) { this.Value = value; this.Next = next; } public int Value... 阅读全文
posted @ 2012-04-20 14:06 RIVERSPIRIT 阅读(165) 评论(0) 推荐(0)
C#原始类型扩展方法—this参数修饰符
摘要:扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。 扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。仅当您使用 using 指令将命名空间显式导入到源代码中之后,扩展方法才位于范围中。 下面的示例演示为 System.String 类定义的一个扩展方法。请... 阅读全文
posted @ 2012-04-09 11:39 RIVERSPIRIT 阅读(341) 评论(0) 推荐(0)
How Duck Typing Benefits C# Developers
摘要:David Meyer recently published a .NET class library that enables duck typing (also sometimes incorrectly described as Latent Typing as Ian Griffiths explains in his campaign to disabuse that notion) for .NET languages.The term duck typing is popularly explained by the phraseIf it walks like a duck a 阅读全文
posted @ 2011-06-15 14:40 RIVERSPIRIT 阅读(360) 评论(0) 推荐(0)
非托管C++代码调用C#编写的dll方法
摘要:CLR VIA C#这本书里面的内容,在网上好像很少关于这方面的内容,贴出来以后留着看。C#调用C++编写的dll,一般都是直接用dllimport,这个资料很多。C++调用C#编写的dll,一般方法都是先用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。CLR VIA C#在讲寄宿和应用程序域的内容时,提供了一个非托管C++直接调用的方法。原理就是,在非托管代码中手动启动CLR加载应用程序域来运行托管的dll,从而调用其中的方法。代码如下:#include <Windows.h>#include <MSCorEE.h>#include &l 阅读全文
posted @ 2011-02-16 17:22 RIVERSPIRIT 阅读(667) 评论(0) 推荐(0)
C++和C#编写调用COM组件
摘要:这篇文章就是关于COM组件的编写和调用的,主要包含了使用VC6.0编写和调用COM组件,VS2005中使用C#编写和调用COM组件,以及在VC6.0和VS2005之间互相调用COM组件。 阅读全文
posted @ 2011-02-16 17:20 RIVERSPIRIT 阅读(685) 评论(0) 推荐(0)
和历与西历之间的转换
摘要:/// <summary>/// 和暦から西暦に変換用関数/// </summary>/// <param name="pStartDate">天皇の誕生日(西暦)(yyyy/MM/dd)</param>/// <param name="pChangeDate">変換の和暦データ(yyMM)</param>/// <re... 阅读全文
posted @ 2010-06-12 15:59 RIVERSPIRIT 阅读(1130) 评论(0) 推荐(0)
C#下日本和历日期格式的转化
摘要:在作多国化应用开发时,经常遇到不同地域显示日期的转换问题。其中日本的和历转换比较特殊,拿出来侃侃。日本历将每个皇帝的统治时期标识为一个纪元。当前纪元是 Heisei 纪元,始于公历 1989 年。纪元名称通常显示在年份前。例如,公历 2001 年是日本历 Heisei 13 年。注意,纪元的第一年称为“Gannen”;所以公历 1989 年是日本历 Heisei Ganne... 阅读全文
posted @ 2010-06-12 15:58 RIVERSPIRIT 阅读(1381) 评论(0) 推荐(0)
认识C# Tips浅拷贝和深拷贝
摘要:引言 C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量,对于值类型变量,深拷贝和前拷贝都是通过赋值操作符号(=)实现,其效果一致,将对象中的值类型的字段拷贝到新的对象中.这个很容易理解。 本文重点讨论引用类型变量的拷贝机制和实现。 C#中引用类型对象的copy操作有两种:浅拷贝(影子克隆/shallow copy):只复制对象的值类型字段,对象的引用类型,仍属于原来的引用. 深拷贝(深... 阅读全文
posted @ 2010-06-08 22:47 RIVERSPIRIT 阅读(174) 评论(0) 推荐(0)
C#自定义集合List及复制操作
摘要:using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace Common { [Serializable] public class GroupNameXML ... 阅读全文
posted @ 2010-02-03 15:57 RIVERSPIRIT 阅读(2178) 评论(0) 推荐(0)
List<T>采用delegate快速实现排序、查找等操作
摘要:.NET中的List<T>非常方便,但是很遗憾得是没有自带更方便的一些排序、查找函数。比如说,Sort()和Find()方法都包含在List<T>里,但果你想使用,你得自己写函数。这往往会让我们感到不爽。本文告诉你,其实这些Sort() Find()方法想要的都只是一个一句话delegate而已。1. 主要讨论以下三个方法:List<T>.Sort()List&... 阅读全文
posted @ 2010-01-12 12:24 RIVERSPIRIT 阅读(216) 评论(0) 推荐(0)
C# 里怎样得到当前执行的函数名,当前代码行,源代码文件名。
摘要:得到函数名: System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); this.Text = st.GetFrame(0).ToString(); 得到代码行,源代码文件名: StackTrace st = new StackTrace(new StackFrame(true)... 阅读全文
posted @ 2009-04-16 17:19 RIVERSPIRIT 阅读(417) 评论(0) 推荐(0)
CodeSmith&NetTiers Step by Step
摘要:一 技术背景在Suryani.China的项目中,GenClaims、Warehouse等项目以Microsoft Enterprise Library作为基础的技术架构,包括其中的DataAccess Block、Logger、Exception、Encryption、Cache等等,搭配使用Open Source的MyGeneration作为代码生成器。整体技术架构遵循三层模型,包括Entit... 阅读全文
posted @ 2009-04-09 11:43 RIVERSPIRIT 阅读(463) 评论(0) 推荐(1)
C#利用System.Threading.Timer实现多线程
摘要:using System; using System.Collections.Generic; using System.Text; using System.Threading; public class TimerClass : IDisposable { public TimerClass() { // ... 阅读全文
posted @ 2008-11-26 11:34 RIVERSPIRIT 阅读(8245) 评论(2) 推荐(0)
Dotnet定时器使用实例详解
摘要:下面代码都是实现每过2秒刷新显示当前数据库的对象,分别使用三种计时器: 1、Winform 的计时器(System.Windows.Forms.Timer) Forms.Timer为单线程计时器,依赖当前窗体.使用最简单: Code public partial class Form1 : Form { System.Windows.Forms.Timer t; public Form1() { ... 阅读全文
posted @ 2008-11-26 10:52 RIVERSPIRIT 阅读(329) 评论(0) 推荐(0)
C#与Javascript数据交互
摘要:C#代码与javaScript函数的相互调用 问:1.如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问JavaScript的已有变量?4.如何在C#中访问JavaScript函数?问题1答案如下:javaScript函数中执行C#代码中的函数:方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中; ... 阅读全文
posted @ 2008-11-15 18:04 RIVERSPIRIT 阅读(844) 评论(0) 推荐(0)
C#可否对内存进行直接的操作
摘要:C#可否对内存进行直接的操作 ?可以使用指针在这篇文章中将描述C#的一个特性指针和所谓的不安全代码。非安全代码 非安全代码就是不在 CLR 完全控制下执行的代码,它有可能会导致一些问题,因此他们必须用 “unsafe” 进行表明: unsafe { ... // unsafe context: can use pointers... 阅读全文
posted @ 2008-11-13 13:51 RIVERSPIRIT 阅读(568) 评论(0) 推荐(0)

1 2 3 下一页