asp.NetにおけるCSharpThinking拡張方法の分析

1903 ワード

本文の例はaspを述べた.NetにおけるCSharpThinking拡張方法.皆さんの参考にしてください.具体的な分析は以下の通りである.
一、変化
①拡張方法の特徴
1)静的方法でなければなりません.2)少なくとも1つのパラメータがある.3)最初のパラメータには、このキーワードを接頭辞として添付する必要があります.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();
}
///


/// C#2
///

///
///
public static string GetLogError(string loginfo)
{
     return string.Format("This is C#2 style: {0}", loginfo);
}
///
/// C#3 string
///

///
///
public static string ToLogError(this string loginfo)
{
     return string.Format("This is C#3 style: {0}", loginfo);
}


二、拡張方法の最大の用途はLinqで使用することである.
① Where , Select , OrderBy,
注意:ソートは元のシーケンスの順序やタイプを変更せず、リストと同じ新しいシーケンスを返します.Sortによって、後者はシーケンスを変更します.だからLinqは副作用がなくて、いくつかとその特殊な情況を除きます.

   company.Department.Select 
  
(dept => new
{
     Name = dept.name,
     Cost = dept.Employees.Sum(person=>person.Salary);
})
.OrderByDescending(x=>x.Cost);

2拡張法はプロセス理解ではなく結果を重視し,これは静的法との違いである.
皆さんのaspについてお話ししたいと思います.Netプログラミングが役立ちます.