- 浏览: 1076554 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (399)
- C++ (39)
- Java (74)
- Java界面开发学习笔记 (4)
- Java用户的c++之旅 (0)
- 自言自语 (12)
- DSP (1)
- MCU (0)
- CG (0)
- Jabber (0)
- Gloox (0)
- Linux (11)
- Windows (19)
- Networks (4)
- Jobs (0)
- PHP (1)
- JSP (2)
- 生活 (35)
- C (2)
- Qt4 (2)
- C# (50)
- WPF (5)
- ASP (2)
- FLEX (47)
- SQL (20)
- JavaScript (12)
- SharePoint (6)
- GWT (1)
- Dojo (9)
- HTML (11)
- Others (7)
- 如何安装配置系列 (7)
- UML (2)
- Android (3)
- alibaba (1)
最新评论
-
zxjlwt:
学习了http://surenpi.com
Firefox插件开发: Hello World! -
ylldzz:
楼主知道MVEL怎么调试么
MVEL简介及快速使用 -
blueman2012:
您好,可否提供源码下载,我把您的代码贴过来后,好多报错的,谢谢 ...
Log4J日志解析 -
svygh123:
你的游标都没有关闭呢!
MYSQL游标嵌套循环示例 -
dizh:
写的很好啊
MVEL简介及快速使用
C#3.0扩展方法是给现有类型添加一个方法。现在类型既可是基本数据类型(如int,String等),也可以是自己定义的类。
//Demo--1 //扩展基本类型 namespace TestExtensionMethods { // 必须建一个静态类,用来包含要添加的扩展方法 public static class Extensions { //要添加的扩展方法必须为一个静态方法 //此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展string类型 //第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可 //综合来讲,此方法就是要给string类型添加一个叫TestMethod的方法, 此方法返回一个int型的值,即返回调用此方法对象的长度。 public static int TestMethod(this string s) { return s.Length; } } //测试扩展方法类 class Program { static void Main(string[] args) { string str = "Hello Extension Methods"; //调用扩展方法,必须用对象来调用 int len = str.TestMethod(); Console.WriteLine(len); } } } //Demo--2 //扩展自定义类型,同时展示了扩展方法带参数情况,以及方法重载 namespace TestExtendMethod { public class Student { public string Description() { return "Student............."; } public string Description(string name) { return "the student’s name is "+name; } } // 必须建一个静态类,用来包含要添加的扩展方法 public static class Extensions { //要添加的扩展方法必须为一个静态方法 //此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展Student类型 //第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可 //综合来讲,此方法就是要给Student类型添加一个叫TestMethod的方法,此方法返回一个string型的值 public static string TestMethod(this Student s) { return s.Description(); } //要添加的扩展方法必须为一个静态方法 //此方法参数列表第一个参数表示要扩展哪一个类,第二个参数才表示此扩展方法的真正参数 //综合来讲,此方法就是要给Student类型添加一个叫TestMethod的方法, 此方法带有一个string类型的参数,并返回一个string型的值 public static string TestMethod(this Student s,string name) { return s.Description(name); } } //测试扩展方法类 class Program { static void Main(string[] args) { Student stu = new Student(); //调用扩展方法,必须用对象来调用 string mes = stu.TestMethod(); Console.WriteLine(mes); //调用带参数的扩展方法,只要传第二个参数就可以了 //因为他的第一个参数其实只是为了表明是扩展哪个数据类型 mes = stu.TestMethod("李沉舟"); Console.WriteLine(mes); } } }总结:
1、扩展方法是给现有类型添加一个方法; 2、扩展方法是通过 指定关键字this修饰方法的第一个参数; 3、扩展方法必须声明在静态类中; 4、扩展方法要通用对象来调用; 5、扩展方法可以带参数。
发表评论
-
策略模式
2010-10-08 16:34 1172一、概念 策略模式(Strategy):它定义了一系 ... -
C#获取返回错误码
2010-05-21 17:59 1810[DllImport("TestWin32Dl ... -
VS.NET 开发Windows服务的步骤
2010-05-20 14:25 1601在很多应用中需要做windows服务来在一些后台操作,比如监视 ... -
c# 允许服务与桌面交互
2010-05-20 14:20 2702我们写一个服务,有时候要让服务启动某个应用程序,就要修 ... -
C#单例模式的三种写法
2010-05-19 15:58 48574第一种最简单,但没有考虑线程安全,在多线程时可能会出问题, ... -
C#中获取我的文档系统文件夹路径
2010-05-17 15:29 2271本技巧使用GetFolderPath方法来获取指向由指定枚 ... -
C#自定义事件的步骤介绍
2010-05-13 17:54 3293通常C#自定义事件有下面的几个步骤: ... -
使用反射机制遍历对象中的属性名及属性值
2010-05-03 16:20 2843首先描述一种情景,当给你一个VO类(这个类是映射到数据库的表 ... -
C#的逆向工程-IL指令集
2010-04-30 10:28 1677一些 IL 语言解释: ... -
使用SqlHelper时“阅读器关闭时read的尝试无效”的解决方法
2010-04-20 14:54 1817原SqlHelper类中ExecuteReader方法体 ... -
C# 删除文件夹
2009-12-31 11:28 2559/// <summary> ... -
System.Windows.Forms.Timer和System.Timers.Timer的区别 [转]
2009-12-16 23:44 5201.NET Framework里面提供了三种Timer: ... -
关于var1=var2=something赋值语句的思考
2009-11-18 16:16 1234刚才在阅读《c#本质论》一书时,开头有提到var1=var2= ... -
C#使textbox滚动到最新一行
2009-11-16 12:33 2538方法1: textBox.Text += " ... -
Invoke()/BeginInvoke()区别
2009-11-15 17:43 7225查看MSDN如下: Control..::.Inv ... -
Invoke 和 BeginInvoke 的真正涵义
2009-11-15 17:37 1327BeginInvoke 方法真的是新开一个线程进行异步调用 ... -
编写安全的多线程C#程序
2009-11-15 01:24 1904与多线程相关的两个常见的需要解决的问题是:临界资源保护和线 ... -
线程,同步与锁——Lock你到底锁住了谁
2009-11-15 01:18 1595线程在多核时代的优势月来越明显,多线程编程的学习也提上议事日程 ... -
关于lock(this)的说明及用法
2009-11-15 01:16 5349一. 为什么要lock,lock了 ... -
远程dll注入 C#
2009-11-14 16:43 3137using System; using System. ...
相关推荐
此外,C# 3.0还引入了扩展方法,这是一种可以在不修改原有类的情况下向该类添加新方法的方式。扩展方法定义在一个静态类中,接收一个参数,并且第一个参数前有`this`修饰符,表示该方法可以被作为实例方法调用。这在...
扩展方法是 C# 3.0 中的另一个重要特性,它允许我们向现有类型添加新的静态方法。这种方法不会改变原始类型的实现,而是通过静态方法的形式为该类型提供了额外的功能。 **示例代码**: ```csharp // 定义扩展方法 ...
3. **扩展方法**:扩展方法使得开发者可以在不修改已有类型的情况下为其添加新方法。这在许多情况下,特别是进行库或框架的开发时非常有用。 4. **自动实现的属性**:C# 3.0引入了自动实现的属性,简化了类的定义,...
查询表达式(又称LINQ查询)是C# 3.0中最显著的新特性之一,它提供了SQL-like的语法来操作各种数据源。查询表达式结合了Lambda表达式、类型推断和其他新特性,简化了数据查询和转换。 ```csharp var query = from ...
【标题】:“vs2008视频教程 2 C#3.0与VB9.0的新特性介绍” 本视频教程聚焦于Visual Studio 2008中的编程语言C# 3.0和Visual Basic 9.0的最新特性。Visual Studio 2008作为微软开发工具的重要组成部分,它在提升...
14. **动态类型**:虽然这个特性是在C# 4.0中引入的,但与C# 3.0的很多特性有关,因为它允许在运行时绑定到对象的方法和属性,这在与非C#语言交互时特别有用。 总的来说,C# 3.0通过引入一系列强大的新特性,显著...
本书作为初学者的指南,详细解释了这些新特性,包括但不限于自动实现属性、匿名类型、扩展方法、查询表达式、动态调用等,这些都是C# 3.0版本中最吸引人的特性之一。 ### 自动实现属性 自动实现属性是C# 3.0新增的...
3. 扩展方法:为了实现LINQ,C# 3.0引入了扩展方法,可以在不修改现有类的情况下为其添加新方法。 4. 表达式树:LINQ的基础是表达式树,它可以表示代码的结构,使得编译器和运行时能解析并执行查询。 三、匿名方法...
C#3.0作为其一个重要里程碑,引入了多项新特性,如匿名方法、Lambda表达式、扩展方法和Linq(Language Integrated Query),极大地提高了程序员的生产力。 在《C#3.0完全自学宝典》中,读者将全面了解到C#的基础...
扩展方法使得可以在不修改原有类型的情况下为其添加新方法。扩展方法必须定义在静态类中,只能作为静态方法存在,但可以像实例方法一样被调用。它们在查找方法时的优先级低于实例方法,只有在找不到实例方法匹配时才...
4. **扩展方法**:扩展方法允许将新方法添加到已存在的类型中,而无需继承或使用装饰器模式。这在提供工具方法或者扩展第三方库时非常有用。 5. **偏函数和部分应用**:C# 3.0引入了偏函数的概念,它允许你提前提供...
扩展方法则允许向已存在的类型添加新方法,而无需继承或使用装饰器模式。 .NET Framework 3.5是.NET Framework的一个重要版本,它包含Windows Presentation Foundation (WPF)、Windows Communication Foundation ...
C# 3.0还引入了扩展方法,这是一种可以为已存在的类型添加新方法而无需继承或使用装饰器的设计模式。扩展方法使得第三方库可以为.NET框架类型或者用户自定义类型添加功能,而不会破坏封装性。我们会在课程中了解如何...
扩展方法允许我们向已存在的类型添加新方法,而无需继承或使用装饰者模式。这对于增强库的功能非常有用,例如`System.Linq`命名空间中为所有IEnumerable类型添加的许多LINQ方法。 4. **自动属性**: 自动属性简化...
4. **扩展方法**:扩展方法允许开发者向已存在的类型添加新方法,而无需继承或使用装饰器模式。这增强了代码的灵活性,如`Enumerable`类中的各种扩展方法用于操作IEnumerable接口实例。 5. **自动属性**:自动属性...
扩展方法使开发人员能够向现有类型添加新方法,而无需修改该类型的源代码。这是通过在静态类中定义方法并使用`this`关键字指定目标类型来实现的。例如: ```csharp public static class StringExtensions { public...
1. **林克(LINQ)**:语言集成查询(Language Integrated Query)是 C# 3.0 的核心特性之一,它允许开发者使用统一的查询语法对各种数据源(如数组、集合、XML、数据库等)进行查询。LINQ 包括 LINQ to SQL(用于...
C# 3.0是.NET Framework 3.5的一部分,发布于2007年,引入了许多创新性特性和改进,极...从匿名类型到LINQ,从扩展方法到隐式类型,每项新特性都为C#开发者提供了更强大的工具,使其能够写出更简洁、更易于理解的代码。
课程(1)则作为一个整体的概述,会介绍C# 3.0的主要新特性,除了Linq和Lambda外,可能还会涵盖匿名类型、自动属性、扩展方法等。这部分内容对于初学者来说非常重要,因为它帮助构建对C# 3.0新特性的全面认识,为后续...
此外,C# 3.0的扩展方法允许我们向已存在的类型添加新方法,而无需继承或使用装饰者模式。这为代码复用和模块化提供了更多可能。还有,C# 3.0中的Lambda表达式是配合LINQ的关键,它是一种简洁的函数定义方式,使得...