c#の依頼
7867 ワード
依頼と汎用型によるバブルソート
class BubbleSorter
{
static public void Sort<T>(IList<T> sortArray,Func<T,T,bool> comparison)
{
bool swapped = true;
do{
swapped = false;
for (int i = 0; i < sortArray.Count - 1; i++) {
if (comparison(sortArray[i + 1], sortArray[i])) {
T temp = sortArray[i];
sortArray[i] = sortArray[i + 1];
sortArray[i + 1] = temp;
swapped = true;
}
}
}
while(swapped);
}
}
class Employee
{
public string Name { get;private set; }
public decimal Salary { get;private set; }
public Employee(string name, decimal salary)
{
this.Name = name;
this.Salary = salary;
}
public override string ToString()
{
return string.Format("{0},{1:c}", Name, Salary);
}
public static bool CompareSalary(Employee e1, Employee e2)
{
return e1.Salary < e2.Salary;
}
}
Employee[] employees =
{
new Employee("Bugs Buhny",20000),
new Employee("Elmer Fudd",10000),
new Employee("Daffy Duck",25000),
new Employee("Wile Coyote",1000000.38m ),
new Employee("RoadRunner",5000)
};
BubbleSorter.Sort(employees, Employee.CompareSalary);
foreach (var employee in employees)
{
Console.WriteLine(employee);
}
Console.Read();
Lambda式
Fun<string,string> test=param=>
{
param+=mid;
return param;
}
Lambda式演算子"=>"の左側に必要なパラメータがリストされ、Lambda演算子の右側にはlambda変数メソッドを付与する実装コードが定義されています.
パラメータ
1.パラメータが1つしかない場合は、パラメータ名を書き出します.
Func<string,string> oneParam=s=>String.Format("test:{0}",s.ToUpper());
依頼はstringパラメータを定義するので、sはstringタイプ、stringである.formatは文字列を返します
2.複数のパラメータ
複数のパラメータを使用するように依頼した場合は、パラメータ名をかっこで囲みます.
Func<double,double,double> test=(x,y)=>x*y;
マルチラインコード
Lambda式に文が1つしかない場合は、コンパイラがステルスなreturn文を追加するため、メソッドの高速内にカッコとreturn文は必要ありません.
Func<double,double,double> test=(x,y)=>x*y;
Func<double,double,double> test=(x,y)=>
{
return x*y;
}
これも正しいですが、
ただし、Lambda式の実装コードに複数の文がある場合は、カッコとreturn文を追加する必要があります.
≪イベント|Events|ldap≫
規則として、イベントは一般的に2つのパラメータの方法を使用し、1つ目のパラメータは1つのオブジェクトであり、イベントの送信者を含み、2つ目のパラメータはイベントに関する情報を提供する.