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つ目のパラメータはイベントに関する情報を提供する.