今天写扩展方法,突然想到,其实扩展方法是静态方法,所以它和原有类中的方法是很不同的,对于扩展方法来说,即使对象为空,也是可以正确执行的,比如下面对于字符串数组的扩展方法:
public static string First(this string[] ss)
{
if(ss == null || ss.Length == 0)
{
return null;
}
return ss[0];
}
public static string Last(this string[] ss)
{
if(ss == null || ss.Length == 0)
{
return null;
}
return ss[ss.Length - 1];
}
这里检测了对象是否为空,如果为空则也返回空,所以使用它的时候,我们就不会因为调用这两个方法而得到 NullPointException:
static void Main(string[] args)
{
string[] ss = null;
var s = ss.First();
if(s == null)
{
Console.WriteLine("<NULL>");
}
else
{
Console.WriteLine(s);
}
Console.ReadLine();
}
使用扩展方法,反而可以进一步简化代码,只是不知道会不会让不了解的人在读代码时有些头晕了。
分享到:
相关推荐
例如,一个名为"document.txt"的文件,在隐藏扩展名时只会显示为"document",现在则会显示完整的名称。 显示文件扩展名有助于识别和管理文件,尤其是当需要更改文件类型或处理潜在的恶意文件时。不过,要注意不要...
本文将深入探讨近100个C#开发小技巧,这些技巧覆盖了从基础语法到高级特性,旨在提升开发效率,优化代码质量,并提供实际可运行的.NET实例源代码。 1. **Linq查询优化**:使用LINQ可以极大地简化数据操作,但需要...
本文将详细解析七个C# .NET编程中的实用小技巧,旨在提升开发效率,优化代码质量。 1. **使用using语句块管理资源** 在处理如文件流、数据库连接等需要手动释放的资源时,`using`语句块是必不可少的。它确保了即使...
在ArcGIS中,进行高效的地理数据管理和分析往往需要掌握一些实用的小技巧。本文将围绕“arcgis小技巧字段内属性提取”这一主题展开讨论,详细解释如何通过ArcGIS中的脚本或工具实现对字段内特定属性的有效提取。这...
接下来,让我们来看一个简单的文件下载方法的示例。这个方法适用于所有类型的Web框架,无论你是使用Spring MVC、Struts还是其他框架。该方法首先获取文件的根目录,这可能因框架而异,然后根据文件名构造完整的文件...
通常写作`(function() { /* code */ })()`,它允许我们在一个独立的作用域内运行代码。 2. **箭头函数**:ES6引入的箭头函数简化了函数定义,如`const add = (a, b) => a + b;`。它们没有自己的`this`,而是继承自...
Unity3D 小技巧 ...Unity3D 提供了一个非常强大的 Editor 编程功能,让开发者可以自己编写 Editor 脚本来扩展 Unity3D 的功能。例如,PlayModePersist 可以保存你在 PlayMode 下对 GameObject 做出的任何改变。
#### 技巧一:优先使用接口进行编程 在.NET框架中,提供了丰富的类和接口供开发人员使用。在实际编程过程中,虽然我们经常能够明确知道正在使用的具体.NET类,但若能尽可能地采用.NET框架支持的接口来进行编程,则...
在探讨C++的小技巧时,我们首先关注到的是代码中所展现的面向对象编程特性,尤其是多态性和虚函数的使用。多态性是面向对象编程的一个核心概念,它允许子类重写父类的方法,从而实现不同行为的统一调用接口。在给定...
标题 "44个实用VB小技巧的打包" 涵盖了Visual Basic(VB)编程中的各种实用技巧,这些技巧可以提升开发效率,优化代码,解决常见问题。VB是Microsoft开发的一种面向对象的编程语言,广泛应用于桌面应用、网页开发等...
另一种更加高效的方法是直接在一个文件夹中新建一个文本文档,将该文档的扩展名改为`.cpp`。例如,要创建名为`test.cpp`的文件,则可以先创建一个名为`test.txt`的文本文档,然后将其重命名为`test.cpp`。需要注意的...
以上四个小技巧展示了框架窗口编程中的常见需求和解决方法,它们可以帮助开发者更灵活地定制用户界面,提升软件的用户体验。掌握这些技巧,对于Windows应用开发的框架窗口设计至关重要。在实际项目中,可以根据具体...
在"示例程序"中,你可能会找到一个完整的扩展实例,包括上述所有部分。通过研究这些代码,你可以学习如何组织扩展的各个组件,以及如何使用JavaScript、HTML和CSS来实现功能。 "指导步骤"提供了原创的开发流程,...
1. **页面生命周期理解**:在ASP.NET中,每个网页都有一个生命周期,包括初始化、加载、验证、呈现和卸载等阶段。了解这些阶段可以帮助开发者在适当的时间执行代码,例如在Page_Load事件中绑定数据。 2. **控件事件...
Firefox扩展插件制作是一个涉及多方面技术的领域,包括JavaScript编程、XML文件结构解析以及对Firefox浏览器API的深入理解。以下是对这些知识点的详细说明: 1. **Firefox扩展(Add-ons)**:Firefox扩展是定制...
- 在命令行中输入`MTEXTED`,将系统变量`MTEXTEDIT`设置为“内部”或通过输入一个小数点字符来清空该变量。 - 这样可以恢复多行文字编辑器的正常使用。 #### 7. 如何拆散CAD图纸中的复杂线型图元? 如果需要拆散...
本压缩包文件“C#小技巧”显然是一个针对C#初学者的资源集合,包含了150个编程实例,旨在帮助学习者掌握C#的基本功能和技术。 首先,我们要了解C#的基础知识,它基于.NET框架,支持类、接口、继承、多态等面向对象...
在J2EE企业级项目开发中,理解并熟练运用Spring的事件处理小技巧至关重要。以下将详细介绍Spring事件处理的核心概念、工作流程以及如何在实践中应用。 首先,Spring通过`ApplicationContextAware`接口提供了一种...
【小水粒扩展+低版本谷歌浏览器】是一个关于在旧版谷歌浏览器上安装和使用“小水粒”扩展程序的主题。这个主题主要涵盖了两个关键点:小水粒扩展的特性和功能,以及如何在低版本的谷歌浏览器上进行适配和优化。 小...