asp.NetにおけるCSharpThinking拡張方法の分析
1903 ワード
本文の例はaspを述べた.NetにおけるCSharpThinking拡張方法.皆さんの参考にしてください.具体的な分析は以下の通りである.
一、変化
①拡張方法の特徴
1)静的方法でなければなりません.2)少なくとも1つのパラメータがある.3)最初のパラメータには、このキーワードを接頭辞として添付する必要があります.4)最初のパラメータには、out,refなどの他の修飾子は使用できません.5)最初のパラメータのタイプはポインタではありません.6)拡張メソッド名がタイプのメソッドと同じである場合(いずれもToStringと命名されている場合)、タイプのメソッドのみが呼び出されますが、拡張メソッドは使用されません.これは優先度の問題です.
②拡張方法と通常の静的方法の比較
C#2でクラスを拡張して継承方式を適用できない場合は、少し「醜い」静的メソッドしか作成できません.C 3では、静的クラスを変更して、クラスが生まれつきのふりをすることができます.
二、拡張方法の最大の用途はLinqで使用することである.
① Where , Select , OrderBy,
注意:ソートは元のシーケンスの順序やタイプを変更せず、リストと同じ新しいシーケンスを返します.Sortによって、後者はシーケンスを変更します.だからLinqは副作用がなくて、いくつかとその特殊な情況を除きます.
2拡張法はプロセス理解ではなく結果を重視し,これは静的法との違いである.
皆さんのaspについてお話ししたいと思います.Netプログラミングが役立ちます.
一、変化
①拡張方法の特徴
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プログラミングが役立ちます.