C#一些小技巧
在C#实现类似Typedef的所有功能
Typedef这个关键字,是比较好用的东西,因为有时候我们需要使用一些别名来帮助我们记忆某些结构体或者类的共用。(个人觉得这是C与C++唯一能吸引我的东西)为了能够实现这个想法,我们可以使用下列方法。
1.使用using语句进行别名,这个方法适合针对结构体。
因为很多时候编程上需要做Win32平台相关的一些工作,比如我要读取一个Unicode字符,但C#并没有双字Word类型,如果我们要支持双字,那么就需要自己定义类或者结构体,但实际上在C++里面,双字实际上是unsigned short,也就是说我们可以用UInt 16来实现对Word关键字的支持,但这里有一个小小的纠结,那就是我知道Word是Unsigned Int16,但是能不能定义成Word呢?这样方便我们记忆啊。
但是有的,这时候我们只需要使用using语句就可以了。
做法是这样子的:
using Word=System.UInt16; word w=16;
这样就可以使用Word关键字声明变量了。
3.使用泛型方法构建通用类
也贴一些运用别名的例子吧!
我的项目里面ToolKits.RPC命名空间下有个Message的类,但是在WindowsForm下面,与框架自带的Message的命名产生了二义性,如果要避免这种情况,我们只能使用完全限定名称(也就是命名空间+类名的形式限定):
Stack<ToolKits.RPC.Message> _messagePool;
或者:
Stack<RPC.Message> _mesagePool;
为了避免每次都输入命名空间限定范围,我使用了using 别名指令 进行限定,如下:

也贴一个原地址,但是全英文撒,看得懂可以自己看,看不懂我贴出译文
[原文] http://www.codeproject.com/Questions/141385/typedef-in-C
翻译图如下:(为了能够更贴近我们的理解,翻译的语句已经进行人工修饰,有些翻译不怎么容易通顺的地方已经摒弃,换作个人理解,如果觉得不好理解可以自行翻译原文)
(编辑了几次,突然发现我的博客园的版面不适合看图,无论我怎么编辑都不能找到合适的缩放大小,所以我这里放在百度盘里面,自行去取吧:http://pan.baidu.com/s/1dFyVbY5)
长图预警

C#一些小技巧的更多相关文章
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...
- 分享两个BPM配置小技巧
1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使 ...
- linux系统维护时的一些小技巧,包括系统挂载新磁盘的方法!可收藏!
这里发布一些平时所用到的小技巧,不多,不过会持续更新.... 1.需要将history创建硬链接ln 全盘需要备份硬链接 ln /etc/xxx /home/xxx 2.root用户不可以远程 /et ...
- JS处理事件小技巧
今天,就分享一下我自己总结的一些JS的小技巧: ①防止鼠标选中事件 <div class="mask" onselectstart="return false&qu ...
- iOS:小技巧(不断更新)
记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...
- css小技巧(1)
1.-webkit-overflow-scrolling: touch; 解决ios滑动时无缓冲问题 2.::-webkit-scrollbar 设置ios滑动时是否显示滚动条 3.::selecti ...
- 最强 Android Studio 使用小技巧和快捷键
写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...
- ios开发中的小技巧
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...
- Jquery 小技巧
[每个程序员都会的35个jQuery的小技巧]收集的35个jQuery的小技巧/代码片段,可以帮你快速开发
随机推荐
- 2015年10月15日学习html基础笔记
一个互联网公司的分工,小公司要求全能,拿一个项目全部做出来.大公司分工明细,主要步奏为策划人员策划方案,美工人员设计图有.psd.rp等,前端人员做静态页面,后台人员获取数据java php .net ...
- java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 *&* 解决方法
java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0*&*^ at java. ...
- Ural1057 - Amount of Degrees(数位DP)
题目大意 求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的B的整数次幂之和.例如,设X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意: 输入:第一行包含两个整 ...
- StreamWriter
public StreamWriter( string path, bool append ) 参数 path 类型:System.String要写入的完整文件路径. append 类型:System ...
- PC-IIS因为端口问题报错的解决方法
1.我的电脑-管理-服务和应用程序-Internet信息服务 情况:这时发现“默认 SMTP 虚拟服务器”停止 解决方法:右击启动 情况:发现网页还是打不开.2.Internet信息服务-网站- ...
- linux下查看本机socket端口详细信息
netstat -paut [root@OA-JRY-SY-FDEP1 nginx-]# netstat -paut Active Internet connections (servers and ...
- linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释 linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID ...
- 为 vsftpd 启动 vsftpd:500 OOPS: bad bool value in config file for: pasv_enable
每行的值都不要有空格,否则启动时会出现错误,举个例子,假如我在listen=YES后多了个空格,那我启动时就出现.. 为 vsftpd 启动 vsftpd:500 OOPS: bad bool val ...
- 赵雅智:js知识点汇总
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0 ...
- JAVA Web 之 struts2文件上传下载演示(二)(转)
JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...