Untitled

 avatar
unknown
csharp
4 years ago
1.8 kB
4
Indexable
using System;
using System.Collections.Generic;

namespace Learn
{
    //Delegate declaration, this delegate
    //points to a function which accepts integer & returns boolean
    public delegate bool IsPassedExam(int totalMarks);

    public class Student
    {
        public readonly int totalMarks;
        public string Name { get; set; }

        public Student(string name, int totalMarks)
        {
            this.Name = name;
            this.totalMarks = totalMarks;
        }

        //Below method expects the condition to determine
        //whether a student pass or fails from the user calling it.
        public void CheckIfPassed(IsPassedExam isPassedExam)
        {
            //isPassedExam calls the user provided function.
            if (isPassedExam(this.totalMarks))
            {
                Console.WriteLine($"Student {this.Name} passed in exam");
            }
            else
            {
                Console.WriteLine($"Student {this.Name} failed in exam");
            }
        }



    }

    class Learn
    {
        //user provided function to determin
        //whether a student pass or fail.
        public static bool ConditionForPassing(int marks)
        {
            return marks > 50;
        }

        public static void Main(string[] args)
        {
            //sample list of students
            List<Student> students = new List<Student>
                {
                new Student("Hari",90),
                new Student("Tom",98),
                new Student("John",46),
                new Student("James",49)
                };

            IsPassedExam isPassedExam = new IsPassedExam(ConditionForPassing);

            foreach (Student student in students)
            {
                student.CheckIfPassed(isPassedExam);
            }

        }

    }
}
Editor is loading...