这里简单写下C# 的??运算符 & 本来这个简单的运算符没什么好说的 但这里做了下性能测试~~ &就自娱自乐的写出来 &主要写下VS2010性能测试的用法~
先看下MSDN的介绍 &
先贴四个方法 字符串类型 和值类型 &一般处理和 用??简化if else的处理&
因为自娱自乐 随便写写 &请原谅我的命名不规范吧&
/// &summary&
/// 传统的字符串类型
/// &/summary&
/// ¶m name="s"&&/param&
/// &returns&&/returns&
private string Test1(string s)
if (s == null)
return "为null";
/// &summary&
/// ??的字符串类型
/// &/summary&
/// ¶m name="s"&&/param&
/// &returns&&/returns&
private string Test2(string s)
return s??"为null";
private int? Test3(int? i)
if (i == null)
private int? Test4(int? i)
return i ?? 0;
& static void Main()
Program p = new Program();
Console.WriteLine("开始");
//测试字符串都为空时
Console.WriteLine(p.Test1(null));
Console.WriteLine(p.Test2(null));
//测试字符串有值时
Console.WriteLine(p.Test1("123"));
Console.WriteLine(p.Test2("123"));
Console.WriteLine(1);
//测试Int都为空时
Console.WriteLine(p.Test3(null));
Console.WriteLine(p.Test4(null));
//测试Int有值时
Console.WriteLine(p.Test3(1));
Console.WriteLine(p.Test4(1));
OK &就这些 &现在说下重点的 用VS2010 的性能测试&
首先点 分析----探查器-----新建性能会话 & 然后启动分析&
效果图如下
上面这个是非独占字节数&
具体用法和分析& 参考MSDN&
这个?? 有一点很不爽& 只能去掉null 不能去掉&&& 而我们真实的项目里一般是 string.IsNullOrEmpty 用这个 这样的话 string类型还是要加上if else的
ps:& 三目运算符 和?? 都能简化 if else& 但是可读性不高& 能让人读懂的代码 才是最好的~~
阅读(...) 评论()随笔 - 35&
文章 - 1&评论 - 36&trackbacks - 0
开发人员不喜欢打字。如果你希望提高开发人员的生产力,减少键入的数量,这也同时减少打字稿的数量以及因此产生的编译器错误,这些都极大分散了开发人员的注意力。代码重用是开发人员收集代码的另一个原因。即使单个应用程序也会大量地由小而公共的代码段组成,在几乎每个程序中都会有相同的代码元素:循环、类、异常处理等等。开发人员传统上是对代码进行剪切和粘贴以避免重复键入。但是这具有相当的局限性,包括有限的持久性,应该有更可行的解决方案。
这个解决方案就是在Visual Studio 2005中引入的代码段技术。代码段是可重用的源代码的容器。一个代码段是代码的一个别名。插入一个代码段就是在光标处或选中的地方将它所代表的代码插入到源文件中。代码段提高了开发人员的效率和准确性。
2.初识代码段
(1).什么是代码段?
将一段代码行提取出来,可以多次重复的使用。VS IDE提供对代码段的完整支持、使代码编写更快、更容易、更可靠。
一个代码段的例子
(2).系统默认代码段
对于开发人员的例行任务,Visual Studio 2005有默认代码段。默认代码段是代码扩展和外侧代码的混合。默认代码段出现在IntelliSense完成列表和代码选择器中。表1列出了一些默认代码段。
表1&默认代码段
该代码段用#if和#endif命令围绕代码
该代码段用#region和#endregion命令围绕代码
该代码段插入一个析构函数
该代码段插入一个定制属性的声明,该定制属性是从System.Attribute派生的一个类
该代码段用一个checked块围绕代码
该代码段插入一个类声明
该代码段插入一个构造函数
该代码段插入一个Console.WriteLine语句
该代码段用一个do while块围绕代码
该代码段插入一个else块
该代码段插入一个enum声明
该代码段重写从System.Object类型继承的Equals方法
该代码段插入一个应用程序异常的声明,该异常派生自System.Exception
该代码段用一个for循环围绕代码
该代码段用一个foreach循环围绕代码
该代码段用一个decrementing for循环围绕代码
该代码段用一个if块围绕代码
该代码段插入一个索引器函数
该代码段插入一个接口声明
该代码段插入一个迭代器
interindex
该代码段插入一个命名的迭代器和索引器
该代码段插入并调用一个事件
该代码段用一个lock块围绕代码
该代码段插入MessageBox.Show语句
该代码段用一个namespace围绕代码
该代码段插入一个属性和后备字段
该代码段插入一个只读属性。只读属性只有一个get方法
该代码段插入一个返回一个整数的静态入口方法
该代码段插入一个struct声明
该代码段插入一个返回为void的静态入口方法
该代码段插入一个switch语句
该代码段插入一个try-catch块
该代码段插入一个try-finally块
该代码段用一个unchecked块围绕代码
该代码段插入一个unsafe块
该代码段用一个using块围绕代码
该代码段用一个while循环围绕代码
(3).代码段管理器
用代码段管理器来管理代码段,包括添加、移除、导入和搜索代码段。
代码段管理器可以在&工具&菜单里打开(见图4.33)。在代码段管理器里显示的文件夹是代码段目录,打开一个文件夹来查看一个代码段。对于每个代码段提供了以下信息:
& &代码段管理器&对话框
l&&&代码段描述
l&&&代码段的别名或快捷方式
l&&&代码段类型
l&&&代码段的作者
对话框里的&添加&按钮向代码段目录列表添加另一个目录。一个代码段目录包含代码段文件,这是带有.snippet后缀的XML文件。对于C#,默认的代码段目录是My Code Snippets,Refactoring和Visual C#。&移除&按钮从列表中移除一个代码段目录。&导入&按钮导入一个代码段文件。用&联机搜索&按钮来浏览代码段,这个按钮打开一个通用搜索窗口,开发人员可以通过它搜索代码段。找到正在搜索的代码段后,就可以将其下载到本地机器。
下载网上所找到的代码段可能会引起安全问题,代码段无法保证所有的XML都是无害的。此外,代码段也可能隐藏有恶意脚本,在代码段中定义的&帮助URL&元素可能会暗地里运行一个脚本。还有,代码段可能会不加任何提示地添加引用,在引用中可能会对函数进行恶意调用。长代码段可能会隐含有害代码。在下载涉及数据库和代码访问安全、基于角色的安全或验证代码的时候要小心。较好的办法是在应用程序使用代码段之前,先仔细检查下载的代码段的源代码。
3.解密代码段
(1).如何定义代码段
&CodeSnippets
xmlns="/VisualStudio/2005/CodeSnippet"&
&CodeSnippet&Format="1.0.0"&
My Snippet
&Code Language="CSharp"&
&![CDATA[MessageBox.Show("Hello World");]]&
&/Snippet&
&/CodeSnippet&
&/CodeSnippets&
对于这段XML的解释
& Header&包含以下子元素:
& Author :&指定代码段的作者姓名。
& Description :&指定有关IntelliSense&代码段内容的描述信息。
& HelpUrl :&指定提供有关代码段的更多信息的URL。
& Keywords :&为代码段指定自定义关键字。
& Shortcut :&指定用于插入代码段的快捷方式文本。
& SnippetTypes :&指定Visual Studio&插入代码段的方式。
& Title :&指定代码段的标题。
& Snippet&包含以下子元素:
& Code :&提供用于容纳IntelliSense&代码段的短代码块的容器。
& Declarations :&指定构成代码段可编辑部分的文本和对象。
& Imports :&指定IntelliSense&代码段使用的导入命名空间。
& References :&指定有关代码段所需的程序集引用的信息。
& SnippetTypes :&指定Visual Studio&插入代码段的方式。
& SurroundsWith:允许将此代码段放置在一段选定的代码周围。
& Expansion:允许将代码段插入到光标处。
&SnippetTypes&
&SnippetType&Expansion&/SnippetType&
&SnippetType&SurroundsWith&/SnippetType&
&/SnippetTypes&
& Code :&提供用于容纳IntelliSense&代码段的短代码块的容器。
属性如下:
& Language:代码语言(必选)
& Kind :&指定代码段所包含的代码类型,并据此指定可以插入代码段
的位置。可用的值有method body、method decl、type decl、
page、file&和any
& Declarations :&指定构成代码段可编辑部分的文本和对象。
包含以下子元素:
& Literal:定义代码段的可编辑文本。
& Object:定义代码段的可编辑对象。
&Declarations&
&ID&SQL&/ID&
&ToolTip&Replace with a SQL connection string.&/ToolTip&
&Default&"SQL connection string"&/Default&
&/Literal&
&ID&Connection&/ID&
&Type&System.Data.SqlClient.SqlConnection&/Type&
&ToolTip&Replace with a connection object in your application.&/ToolTip&
&Default&dcConnection&/Default&
&/Declarations&
&/Snippet&
4.使用代码段
&&如何使用代码段?
&&通过键盘快捷键
& Ctrl+K、Ctrl+X
& Ctrl+K、Ctrl+S (外侧代码段)
&&通过IntelliSense&自动完成使用代码段
&&键入快捷方式,键入两次Tab&以调用代码段
&&通过&编辑&菜单使用代码段
&&从&编辑&菜单中选择&IntelliSense&,然后选择&插入代码段&命
&&通过上下文菜单使用代码段
&&右击光标,然后从上下文菜单中选择&插入代码段&命令
阅读(...) 评论()