惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
爱范儿
爱范儿
The Register - Security
The Register - Security
小众软件
小众软件
D
DataBreaches.Net
雷峰网
雷峰网
S
Secure Thoughts
L
LINUX DO - 最新话题
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
罗磊的独立博客
F
Fortinet All Blogs
博客园 - 叶小钗
TaoSecurity Blog
TaoSecurity Blog
博客园 - Franky
aimingoo的专栏
aimingoo的专栏
S
SegmentFault 最新的问题
Hacker News: Ask HN
Hacker News: Ask HN
Help Net Security
Help Net Security
N
News and Events Feed by Topic
S
Security Affairs
The Last Watchdog
The Last Watchdog
Forbes - Security
Forbes - Security
S
Security @ Cisco Blogs
Latest news
Latest news
O
OpenAI News
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
Google Online Security Blog
Google Online Security Blog
S
Securelist
博客园 - 司徒正美
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Palo Alto Networks Blog
T
The Blog of Author Tim Ferriss
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
AI
AI
SecWiki News
SecWiki News
G
GRAHAM CLULEY
Cloudbric
Cloudbric
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LINUX DO - 热门话题
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed

博客园 - jujusharp

异步控制器, 从ASP.NET MVC 2到4 你知道为啥++[[]][+[]]+[+[]] = 10? 我为啥喜欢WinPhone - jujusharp - 博客园 WinPhone开发阶段总结 C#与闭包 .NET 4.0新增命名空间:System.Collections.Concurrent .NET程序员学PHP:常见编程错误 .NET程序员学PHP:static关键字 PHP:使用'./include.php'替换'include.php’ jQuery 1.4: 15个你应该知道的新特性(译) .NET 4.0新特性-- Corrupted State Exceptions C# 4.0新特性-索引属性 .NET Framework 版本安装调查 C# 4.0 新特性-dynamic 从键盘布局开始说C#中的符号 C# 特性复习-泛型 10个你需要了解的不常见的Html标签(译) C# Small Tips javascript Array.sort() 跨浏览器下需要考虑的问题
C# Tips-2
jujusharp · 2010-03-01 · via 博客园 - jujusharp

上次写过一些平常开发中总结的小技巧,这次继续补充一部分。

1. 多个Using简化书写。

我们经常会遇到需要使用多个using对象的时候,这时候我们可能这样写代码:

using (Class1 c1 = new Class1(someParam1))
{
using (Class2 c2 = new Class2(someParam2))
{
//TODO:在这里添加功能代码
}
}

实际上,我们可以简化书写:

using (Class1 c1 = new Class1(someParam1),Class2 c2 = new Class2(someParam2))
{
//TODO:在这里添加功能代码
}

2. 很多时候,我们在判断某字符串是否是某几个指定字符串之一,可能会写出下面的代码:

bool NameExists(string name) {
return name == “张三” || name == “李四” || name == “王五” ||name == “赵六”;
}

但3.0以后这里其实有更加简单的写法:

bool NameExists(string name){
return new[] { “张三”, “李四”, “王五”, “赵六” }.Contains(name);
}

或者如果这种判断很频繁的话,我们还可以使用扩展方法:

public static bool In(this string name, params string[] names)
{
foreach (string specialName in names)
{
if (name != specialName) return false;
}
return true;
}

var name

="test";
Console.Write(name.In(
"张三",“李四”, “王五”, “赵六”);

3. 在比较字符串时,我们有时会忽略大小写比较,你可能会这样写代码:str1.ToUpper() == str2.ToUpper(), 不过实际上string对象已经提供了很多更好的方法,如: str1.Equals ( str2, StringComparison.OrdinalIgnoreCase)

4. ??用于在对象为空时指定默认值,我们可以使用这个特性做多个默认值的绑定

string result = var1 ?? var2 ?? var3 ?? String.Empty;

5. 这种用法并不推荐,不过你确实可以使用中文等非英语语言对类或者方法进行命名,如:

public string 方法1(){
return “XXXXXXX”;
}

不仅如此,你甚至还可以使用转义符来命名:

public string 测试\u9999哈(){
return "aaa";
}

实际调用的方法名为:测试香哈();

6. 在C#中我们同样可以创建类似JS的匿名行内函数,如:

var var1 = new Func<String>(() =>{
return “测试测试”;
})();

希望这些总结对读者同样会有所帮助。