C# 言語で 2 つのパラメーターを取り、2 つ以上の値を返す Max という名前のジェネリック メソッドを記述します。参照型のみをサポートするように制約を適用します。int 型のプロパティとして給与を持つ Employee クラスに対してテストします。Max は、給与に基づいて 2 つの従業員インスタンスを比較し、より高い給与を持つ従業員インスタンスを返す必要があります。これは私が行ったことです。
using System;
using System.Collections.Generic;
using System.Text;
namespace Generic_Max_of_Salary
{
class Program
{
static void Main(string[] args)
{
runtest();
}
public static void runtest()
{
Test_Maximum(new Employee { Salary = 10000 }, new Employee { Salary = 20000 }, new Employee { Salary = 20000 }, 1);
Test_Maximum(new Employee { Salary = 30000 }, new Employee { Salary = 20000 }, new Employee { Salary = 30000 }, 2);
Test_Maximum(new Employee { Salary = 10000 }, new Employee { Salary = 10000 }, new Employee { Salary = 10000 }, 3);
}
public static void Test_Maximum(Employee emp1, Employee emp2, Employee obtained_answer, int testcase)
{
Employee expected_answer = Maximum<Employee>(emp1, emp2);
if (CompareTo(obtained_answer, expected_answer))
{
Console.WriteLine("Test " + testcase + " Passed");
}
else
{
Console.WriteLine("Test " + testcase + " Failed");
}
}
public static T Maximum<T>(T emp1, T emp2)
{
if (emp1.Salary >= emp2.Salary)
{
return emp1;
}
else
{
return emp2;
}
}
public static bool CompareTo(Employee obtained_answer, Employee expected_answer)
{
if (obtained_answer.Salary == expected_answer.Salary)
{
return true;
}
else
{
return false;
}
}
}
class Employee
{
public int Salary { get; set; }
}
}