C#
文章平均质量分 71
rednaxelafx
这个作者很懒,什么都没留下…
展开
-
nop对程序语义的影响
原本我一直以为nop对程序语义应该没什么影响的,呜,我错了。之前一直觉得很奇怪,为什么不开/o(/optimize,优化)开关来编译C#程序的话,生成的IL代码里会有很多nop。后来才知道那些nop是在一些语句或者表达式片段的边界放的,目的是为了提供更好的调试体验:有些代码被编译之后可能会变得比较难下断点,所以插入nop来占位,使得原本难下断点的地方能被设置断点。但是插入nop的代...2008-06-05 12:28:23 · 216 阅读 · 0 评论 -
将ANTLR生成的.tokens文件重格式化(C#版)(20080721更新)
相关链接:[url=http://rednaxelafx.iteye.com/blog/176731]将ANTLR生成的.tokens文件重格式化(Ruby版)[/url][url=http://rednaxelafx.iteye.com/blog/177089]将ANTLR生成的.tokens文件重格式化(C++版)[/url]既然都把Ruby和C++版写出来了,干脆有爱的把C#...2008-03-28 04:04:28 · 198 阅读 · 0 评论 -
C#中只接受数字输入的控件
在MFC里需要获取文本输入时,经常会用到[url=ES_NUMBER]CEdit[/url]或者它的子类。可以通过设置它的[url=http://msdn2.microsoft.com/en-us/library/bb775464.aspx]Edit Control Styles[/url]来控制Edit控件的一些行为,例如说设置[i]ES_NUMBER[/i]标识使控件只允许接受数字(虽然可以复...2008-04-06 00:44:36 · 560 阅读 · 0 评论 -
一个简单的计算器——使用System.CodeDom来生成代码
链接:[url=http://www.codeproject.com/KB/recipes/matheval.aspx]Evaluating Mathematical Expressions by Compiling C# Code at Runtime[/url], by Marcin Cuprjak (aka Vlad Tepes)本文只是上面链接里的文章的C# 3.0翻新版。主要是引...原创 2008-04-15 03:41:20 · 1269 阅读 · 0 评论 -
使用lambda expression来动态获取delegate,然后用Cecil注入代码(1)
深感一口气吃不成胖子的郁闷……要是时间能停下来让我慢慢想就好了。之前留意到[url=http://raylinn.iteye.com/]ray_linn[/url]在这边的留言,提到AOP的需求:希望能找到一种办法来自动生成待注入的[url=http://en.wikipedia.org/wiki/Common_Intermediate_Language]IL[/url],然后利用[url...2008-04-15 05:47:46 · 301 阅读 · 0 评论 -
FGAB问题——C#的语法二义性
[url=http://books.google.com/books/elsevier?id=g6axWRRpJZwC&dq=%22C%23+Annotated+Standard%22&pg=PR25&lpg=PR25&sig=ACfU3U0E9cxBb5UlqaFp2ikgMVaKB5KLlg&q=G%3CA#PPA78,M1]C# Annotated Standard[/url]的第78页上有...原创 2008-10-26 12:27:48 · 631 阅读 · 0 评论 -
C# 4的方法动态分派逻辑变了……
CTP里的C# 4离“现在”的进度果然差好远啊。我[url=http://rednaxelafx.iteye.com/blog/260206]上一篇[/url]描述的C# 4方法动态分派的逻辑只适用于CTP,现在规则变成了这样:Sam Ng: [url=http://blogs.msdn.com/samng/archive/2008/11/09/dynamic-in-c-iii-a-sligh...原创 2008-11-12 11:20:09 · 138 阅读 · 0 评论 -
[转帖] 用C# Generator解决Hanoi塔问题
下面的代码从[url=http://dotnet.sys-con.com/read/47002.htm]Iterators in C#: Nothing Beats the Foreach Loop[/url]转来。[code="c#"]using System.Collections.Generic;public enum Peg { A, B, C };public s...2008-04-28 11:23:20 · 104 阅读 · 0 评论 -
原来C#里配合Nullable类型还有个??运算符……
失败了,这个运算符居然一直没注意到。虽说第一次看到就直观的知道它的语义,但……读书不仔细真是罪过 T T[b]??[/b]运算符:双目运算符,左操作数可以是一个Nullable类型,右操作数是其对应的非nullable类型的值;对引用类型也有效。主要用于Nullable类型对相应的非nullable类型变量赋值;这样的赋值如果不使用??运算符则会带来编译时错误。例子:[co...原创 2008-05-11 01:00:56 · 73 阅读 · 0 评论 -
C#的+=运算符两例
刚偶尔看到了[url=http://justjavac.iteye.com/]justjavac[/url]写的[url=http://justjavac.iteye.com/blog/175250]java解惑 - 半斤八两(一)[/url]和[url=http://justjavac.iteye.com/blog/175251]java解惑 - 半斤八两(二)[/url]。里面提到了Java的...原创 2009-05-06 18:18:56 · 353 阅读 · 0 评论 -
看到一个关于ref参数与多态的问题,记一下
刚才读到Alan McGovern的[url=http://monotorrent.blogspot.com/2009/05/polymorphism-why-do-you-fail-me.html]一帖[/url],问为什么形式参数是ref A的地方不能把ref B作为实际参数传进去:[code="c#"]class A { }class B : A { }// ...pub...原创 2009-05-18 10:48:18 · 150 阅读 · 0 评论 -
反射与显式实现接口的方法
在[url=http://rednaxelafx.iteye.com/blog/391600]前一帖[/url]里,我用到了下面三处Expression.Call()的调用。它们都需要一个MethodInfo参数来指定调用的方法,我就通过直观的反射来得到这些参数。[code="c#"]// 1Expression.Call( Expression.Constant(list),...原创 2009-05-20 11:43:40 · 133 阅读 · 0 评论 -
Scott Peterson: Variance, Thy Name is Ambiguity
原文作者:Scott Peterson原文地址:[url]http://themonkeysgrinder.blogspot.com/2009/06/variance-thy-name-is-ambiguity.html[/url] Scott同学关于co-/contravariance的几个帖子都值得一读。这篇算是比较总结性的。另外几篇的链接就在文中开头几句。若某个类实现了同...原创 2009-07-01 23:49:08 · 92 阅读 · 0 评论 -
把lock的意思给弄混了 T T
悲剧啊……前几天有个同学不停问我Java里的同步问题,今天写C#的时候却不小心把lock的语义给弄混了。诶,才回答过的问题换个马甲就把我给绊住了 T T下午写代码的时候,对某个库的实现有点疑问,就钻进去看了下。然后看到一个方法A里是用lock语句包围的,获取了一个锁,其中调用了一个辅助方法B;B也是被lock语句包围的,要获取了同一个锁。我就纳闷这代码是怎么跑得通的,两个方法要同时获取同一...原创 2009-08-20 17:49:35 · 97 阅读 · 0 评论 -
趣味编程:函数式链表的快速排序
[color=red](恢复自2009-08-28的备份。幸好做了备份,不然换机房过程中损失的8小时数据就……)[/color][b][size=medium]题目[/size][/b][url=http://www.cnblogs.com/JeffreyZhao/archive/2009/08/27/functinal-list-quick-sort.html]老赵[/url]在...原创 2009-08-31 08:53:11 · 112 阅读 · 0 评论 -
要让CLR挂掉的话……
(Disclaimer:如果需要转载请先与我联系。作者:RednaxelaFX -> rednaxelafx.iteye.com)系列文章:要让CLR挂掉的话……[url=http://rednaxelafx.iteye.com/blog/461787]要让CLR挂掉的话(第二弹)……[/url]前几天跟[url=http://yuesefa.iteye.com/]浩飞...2009-09-02 16:53:15 · 111 阅读 · 0 评论 -
要让CLR挂掉的话(第二弹)……
(Disclaimer:如果需要转载请先与我联系。作者:RednaxelaFX -> rednaxelafx.iteye.com)系列文章:[url=http://rednaxelafx.iteye.com/blog/460893]要让CLR挂掉的话……[/url]要让CLR挂掉的话(第二弹)……同[url=http://rednaxelafx.iteye.com/bl...2009-09-04 03:26:16 · 265 阅读 · 0 评论 -
委托与方法和隐藏参数
之前正好发了些帖子是[url=http://rednaxelafx.iteye.com/blog/460893]关于CLR里的委托[/url]的,然后看到老赵说事件也应该是对象才好,我想提一下委托与方法和隐藏参数的关系,以此来类比到“事件对象”。在C++、Java、C#等支持面向对象编程的语言里,“静态方法”与“实例方法”有显著的不同。一方面,静态方法不是虚方法,不参与继承相关的多态(但是...原创 2009-09-07 15:32:44 · 144 阅读 · 0 评论 -
this的寿命?
[url=http://d.hatena.ne.jp/NyaRuRu/]NyaRuRuさん的blog[/url]真是一个宝库,有许多有启发性的日记。刚才读到这么一篇:[url=http://d.hatena.ne.jp/NyaRuRu/20060626/p4]this の寿命[/url],虽然是06年的老文,却还是让我惊讶了一番。文中提到,“this”在实际运行中并不一定在其作用域内都存活...原创 2008-10-02 22:48:27 · 114 阅读 · 0 评论 -
LINQ与DLR的Expression tree(5):用lambda表达式表示常见控制结构
(Disclaimer:如果需要转载请先与我联系作者:RednaxelaFX at rednaxelafx.iteye.com)系列文章:[url=http://rednaxelafx.iteye.com/blog/237822]LINQ与DLR的Expression tree(1):简介LINQ与Expression tree[/url][url=http://rednaxe...2008-10-01 00:34:07 · 140 阅读 · 0 评论 -
C# 3.0的自动生成的属性
之前在[url=http://rednaxelafx.iteye.com/blog/177092]将ANTLR生成的.tokens文件重格式化(C#版)[/url],我把一个简单的对文本文件的匹配和排序程序用C#实现出来,并且与同系列文章中的Ruby和C++实现做了对比。当时我用到了C# 3.0的一些新特性来展现C#的简洁性,例如Lambda表达式之类。不过最近在读Jon Skeet编写、Mann...2008-06-16 06:54:11 · 157 阅读 · 0 评论 -
Fibonacci数列的一种经典递归实现
刚才.NET课程期末考试,正好最后一题考的是递归实现Fibonacci数列.顺便就把代码打出来发在这里.(虽然没什么技术含量 :wink: )主要特性就是使用buffer将先前已经计算过的Fibonacci数列的值保存下来,减少递归时的重复计算开销.C#没直接的lazy evaluation,这种采取buffer的策略应该是不错的选择吧.另外,实现了IEnumerable和IEnu...2007-10-19 12:05:43 · 100 阅读 · 0 评论 -
又一面试题,又一伪命题 - 关于C中字符数组逆序的方法
最近土豆同学经常去参加各种面试和笔试,而我也获益不少,得以见识到这些"题目"的诡异.这次听到的,是一个关于C语言中字符串逆序的问题.问题的核心是: 用什么办法,可以最高效的把一个char[]内容的顺序逆转? 最好是不用额外的存储空间.我陷入了沉思.土豆同学问我的时候,一再强调既不需要用"额外的存储空间,也不需要加减或者异或运算";跟算法没关系,而是与类似语言特性的特性相关.想想也是,要逆序...2007-10-21 19:46:21 · 138 阅读 · 0 评论 -
[无聊扔作业系列](一)一个浏览文件系统的控件
啊,又无聊了。考试之后的无限空洞。于是今天开始推出无聊扔作业系列(扔鸡蛋扔番茄……Anyway,这是这个学期的.NET课程的第一次实践作业。快两个月前写的东西了...虽说是课程不过其实没教什么,实践题也都是超简单的类型。也好,不然大四还要做繁琐的基础作业就更郁闷了。=========================================================...2007-11-17 18:02:03 · 145 阅读 · 0 评论 -
C#里,派生类的方法里的匿名delegate调用基类的方法会产生无法验证的代码
看来阅读一个开发人员的blog是获取知识的一个捷径,特别是当那位开发人员负责的产品是你天天都用的基础设施之一,例如说……编译器。在阅读[url=http://blogs.msdn.com/ericlippert/]Eric Lippert的blog[/url]时,我无意中了解到了很多我以前所不熟悉的知识,例如说一些语言特性,一些编程思想之类;但更有趣的,我了解到了很多他所负责的产品中的诡异地方。...2007-11-21 16:34:59 · 245 阅读 · 0 评论 -
[无聊扔作业系列](二)一个简单的XML浏览/编辑器
题目:[quote]第三章实践作业1.编写一个窗口应用程序,在窗口中有一个Tree控件和一个“浏览”按钮。单击“浏览”按钮,可以打开一个“打开文件”对话框,选择一个XML文件,在Tree中显示XML所对应的树形结构。 2.扩展创新功能(可选的附加功能,属加分项目):对树结构的处理上,例如添加、删除节点。能保存到原XML文件中。作业要求:窗口应用程序 功能: ...2007-11-26 18:08:52 · 212 阅读 · 0 评论 -
[自用笔记] 简单数据与简单WinForm控件的数据绑定初探
啊,之前只用DataGridView跟DataSet做过数据绑定,还没试过其它控件跟些比较简单的数据的绑定时怎样的。一直以为都是跟DataGridView+DataSet一样能实现双向的自动更新……结果貌似不是的。先来看程序代码:Form1.cs[code="c#"]using System;using System.Windows.Forms;namespac...2007-11-28 20:55:32 · 373 阅读 · 0 评论 -
装了VS2005 SP1,测了些原来测的东西
之前学C#时写过个测试,看看readonly的行为到底如何。结果让我挖到了VS2005/.NET Framework 2.0里C#编译器的一个bug:readonly的值类型常量的值在运行时能被改变。今天因为需要装了VS2005 SP1,突然想起这东西,于是重新写了个来测试:[code="c#"]public sealed class TestReadonly{ static...2007-12-06 19:28:30 · 65 阅读 · 0 评论 -
LINQ的恶搞……
在去年QCon SF的[url=http://www.infoq.com/interviews/LINQ-Erik-Meijer]一个访谈[/url]里,Erik Meijer提到可以把这样一个lambda表达式:[code="c#"]x => x + 1[/code]写成:[code="c#"]from x in default(int)select x + 1[/code]...2009-03-17 17:40:17 · 79 阅读 · 0 评论 -
带StringBuilder参数的ToString()重载?
看到了这样一个方法:[code="c#"]public override string ToString() { StringBuilder sb = new StringBuilder(); ToString(sb); return sb.ToString();}[/code]乍一看觉得挺无聊的,干嘛还要特意写个接收StringBuilder的ToS...原创 2008-09-05 04:56:48 · 402 阅读 · 0 评论 -
LINQ与DLR的Expression tree(1):简介LINQ与Expression tree
(Disclaimer:如果需要转载请先与我联系;文中图片请不要直接链接作者:RednaxelaFX at rednaxelafx.iteye.com)系列文章:LINQ与DLR的Expression tree(1): 简介LINQ与Expression tree[url=http://rednaxelafx.iteye.com/blog/241430]LINQ与DLR的Exp...2008-09-06 05:17:21 · 169 阅读 · 0 评论 -
C#中的generator不会被立即执行……
读了[url=http://blogs.msdn.com/ericlippert/default.aspx]Eric Lippert[/url]的这帖:[url=http://blogs.msdn.com/ericlippert/archive/2008/09/08/high-maintenance.aspx]High maintenance[/url]之后,心里一阵寒——我自己写的代码里就有几乎...原创 2008-09-09 15:48:27 · 367 阅读 · 0 评论 -
类型的可见性,System.Reflection与Mono.Cecil的差异
C#的访问限制修饰符对应到Type的可见性属性有以下对应关系:顶层类:public -> IsPublicinternal -> IsNotPublic(默认)-> internal -> IsNotPublic嵌套类:public -> IsNestedPublicprotected -> IsNestedFamilyprotected internal ->...原创 2008-09-21 15:43:46 · 199 阅读 · 0 评论 -
稍微修改过的Mono.Cecil
给Jb Evain发了email不过还没得到回复。但是有个功能想用但Mono.Cecil没有,而且也有些与System.Reflection不兼容的地方。想想还是自己先做点修改来用用好了。修改的说明:[quote]Modified Mono.Cecil in a few places, based on Jb Evain'sMono.Cecil in Mono SVN trunk ...原创 2008-09-21 18:04:50 · 139 阅读 · 0 评论 -
不要通过enumerator来改变集合的内容
这话题已经被提过很多次,Java和.NET社区都应该很熟悉这点了,但总是会见到有人犯这个错误……举个糟糕的代码为例:[code="c#"]using System;using System.Collections.Generic;using System.Linq;namespace BadExample { static class Program { ...原创 2008-09-21 23:44:23 · 98 阅读 · 0 评论 -
Nullable的诡异之处……
原来Nullable type是null的时候,以它作为被调用对象是不会得到NullReferenceException的。以前都没发现,得小心点才行……引用Steve Wellens在CodeProject上发表的[url=http://www.codeproject.com/script/Articles/BlogArticle.aspx?aid=34720]C# Nullable T...原创 2009-04-02 20:52:27 · 113 阅读 · 0 评论 -
LINQ与DLR的Expression tree(4):创建静态类型的LINQ表达式树节点
(Disclaimer:如果需要转载请先与我联系;文中图片请不要直接链接作者:RednaxelaFX at rednaxelafx.iteye.com)系列文章:[url=http://rednaxelafx.iteye.com/blog/237822]LINQ与DLR的Expression tree(1):简介LINQ与Expression tree[/url][url=ht...原创 2008-09-27 00:18:47 · 212 阅读 · 0 评论 -
字符串的一般封装方式的内存布局 (1): 元数据与字符串内容,整体还是分离?...
(Disclaimer:未经许可请勿转载。如需转载请先与我联系。作者:RednaxelaFX -> rednaxelafx.iteye.com)字符串的一般封装方式的内存布局系列:[url=http://rednaxelafx.iteye.com/blog/1969833](0): 拿在手上的是什么[/url][size=medium]1、元数据,字符串内容:整体还是分离?...原创 2013-11-07 17:44:27 · 196 阅读 · 0 评论