[C#] szablon funkcji

0

Czy w C# da się zrobić coś takiego jak szablon funkcji

robię sobie klasę do walidacji i chcę miec tam taką funkcję, która zwraca wartość logiczną z porównania

czy to będzie int, double, datetime - czy da się zrobić to w C#?

0

typy ogólne/generyczne/parametryzowane (jak kto woli nazewnictwo). generics.
http://www.codeguru.pl/article-459.aspx na przykład.

0

dzięki za odpowiedź, ale jakoś sobie nie radzę

 public bool porownaj<T>(T iVar, T iValPorownywana, int iTypPorownania)
        {
            switch (iTypPorownania)
            {
                case 1:
                    return iVar == iValPorownywana;
                case 2:
                    return iVar > iValPorownywana;
                case 3:
                    return iVar < iValPorownywana;
                case 4:
                    return iVar >= iValPorownywana;
                case 5:
                    return iVar <= iValPorownywana;
                case 6:
                    return iVar != iValPorownywana;
                default:
                    return false;
            }
        }

szablonu potrzebuję do powyższej funkcji, aby sobie porównać uint, int, date, double, co tam się da - ale przy kompilacja wywala mi błąd, że nie może porównać T z T (w sumie ma rację), ale jak temu zaradzić?

0
public static bool porownaj<T>(T iVar, T iValPorownywana, int iTypPorownania) where T : IComparable //zaznaczamy, że T ma implementować interfejs IComparable zawierający metodę CompareTo
        {
            switch (iTypPorownania)
            {
                case 1:
                    return iVar.CompareTo(iValPorownywana) == 0;
                case 2:
                    return iVar.CompareTo(iValPorownywana) > 0;
                case 3:
                    return iVar.CompareTo(iValPorownywana) < 0;
                case 4:
                    return iVar.CompareTo(iValPorownywana) >= 0;
                case 5:
                    return iVar.CompareTo(iValPorownywana) <= 0;
                case 6:
                    return iVar.CompareTo(iValPorownywana) != 0;
                default:
                    return false;
            }
        }

Poza tym funkcja jest bezsensowna deczko. Dlaczego chcesz związać typ porównania z liczbami 1 2 3 4 5 6 ? Nie przekombinowałeś przypadkiem ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1