当前位置: 首页 > 编程笔记 >

asp.net中CSharpThinking扩展方法分析

左恺
2023-03-14
本文向大家介绍asp.net中CSharpThinking扩展方法分析,包括了asp.net中CSharpThinking扩展方法分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了asp.net中CSharpThinking扩展方法。分享给大家供大家参考。具体分析如下:

一、演变

① 扩展方法特征

1)必须在一个静态方法中。
2)至少有一个参数。
3)第一个参数必须附加this关键字作为前缀。
4)第一个参数不能有其他任何修饰符(如 out,ref)。
5)第一个参数的类型不能是指针。
6) 如果扩展方法名称与类型的方法一样(如都命名为ToString),则只有类型的方法会被调用,而扩展方法的不会,这是一个优先级问题。

② 扩展方法与普通静态方法的比较

C#2 时对一个类进行扩展而又不能应用继承方式时,只能编写稍微“丑陋”的静态方法。C#3允许我们更改静态类,来假装方法是类与生俱来的。

public static void Demo1()

{

     // C#2 普通调用方式

     string Log2 = ExtensionCompare.GetLogError("C#2 普通静态方式");

     Console.WriteLine(Log2);

     // C#3 扩展方法调用方式      string Log3 = "C#3扩展方法方式".ToLogError();      Console.WriteLine(Log3);

     Console.ReadLine(); } /// <summary> /// C#2 常规静态方法扩展 /// </summary> /// <param name="loginfo">格式化信息</param> /// <returns></returns> public static string GetLogError(string loginfo) {      return string.Format("This is C#2 style: {0}", loginfo); } /// <summary> /// C#3 用扩展方法实现的string类型扩展 /// </summary> /// <param name="loginfo"></param> /// <returns></returns> public static string ToLogError(this string loginfo) {      return string.Format("This is C#3 style: {0}", loginfo); }

二、扩展方法最大的用途是在Linq中使用。

① Where , Select , OrderBy,

注:排序不会改变原序列的顺序及类型,返回一个新序列,这与List.Sort不同,后者会改变序列。所以Linq是无副作用的,除了一些及其的特殊情况。

company.Department.Select

(dept => new 

{

     Name = dept.name,

     Cost = dept.Employees.Sum(person=>person.Salary);

})

.OrderByDescending(x=>x.Cost);

② 扩展方法更注重结果而非过程理解,这是与静态方法的区别。

希望本文所述对大家的asp.net程序设计有所帮助。

 类似资料:
  • 本文向大家介绍JS扩展方法实例分析,包括了JS扩展方法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS扩展方法实现技巧。分享给大家供大家参考。具体分析如下: JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对某个类的扩展写法来实现。这个东西非常好用,如果将预先写好的方法放到一个js里面引用的话,那么后面写js将非常有趣。 下面给出一个例子: 好像只是告诉自己有

  • 本文向大家介绍C#中的扩展方法,包括了C#中的扩展方法的使用技巧和注意事项,需要的朋友参考一下 扩展方法是静态方法,就像它们是扩展类型的实例方法一样被调用。使用扩展方法,您可以将方法添加到现有类型中,而无需创建新的派生类型,重新编译或修改原始类型。 以下是我们创建的扩展方法。 让我们看一个使用扩展方法的例子。 示例 输出结果

  • 本文向大家介绍ASP.NET MVC HtmlHelper如何扩展,包括了ASP.NET MVC HtmlHelper如何扩展的使用技巧和注意事项,需要的朋友参考一下 一、ASP.NET 扩展方法三要素 (1)、静态类 可以从下图看出,InputExtension首先是一个静态类; (2)、静态方法 既然是静态类,那么其所有的方法必然都是静态方法,例如:public static MvcHtmlS

  • 一周前,我想,我开始在我的谷歌浏览器控制台上收到警告信息。 有没有办法摆脱这些警告?

  • 本文向大家介绍C#中的任何扩展方法,包括了C#中的任何扩展方法的使用技巧和注意事项,需要的朋友参考一下 该扩展方法是System.Linq的namepspace的一部分。使用此方法,可以检查是否有任何元素符合特定条件。 首先,设置一个包含元素的数组- 以下是一个示例。它检查数组中的任何元素是否大于或等于20- 这是完整的代码- 示例 输出结果

  • 本文向大家介绍C#中的扩展方法详解,包括了C#中的扩展方法详解的使用技巧和注意事项,需要的朋友参考一下 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 以上是msdn官网对扩展方法的描述,现在我通过一个情景例子来对此进行阐释。假设一个控制台程序class Program{}