2
Answers

NP115 method header is becoming data type

Maha

Maha

16y
1.9k
1

Hi Guys

 

NP115 method header is becoming data type

 

In the following callback program method header is becoming data type (highlighted in yellow). And parameter is becoming method (highlighted in green) I wish to know the reason for that. Please explain the reason.

 

Thank you

 

using System;

 

namespace MyCompany

{

    public class Employee

    {

        private string firstName;

        private string lastName;

        private decimal salary;

 

        public Employee(string first, string last, decimal salary)

        {

            this.firstName = first;

            this.lastName = last;

            this.salary = salary;

        }

 

        public string FirstName

        {

            get { return firstName; }

            set { firstName = value; }

        }

        public string LastName

        {

            get { return lastName; }

            set { lastName = value; }

        }

        public decimal Salary

        {

            get { return salary; }

            set { salary = value; }

        }

 

        public override string ToString()

        {

            /*return String.Format("{0} {1} with a payroll of {2}",

      firstName, lastName, salary);*/

 

            //OR

 

            return "" + firstName + " " + lastName + " " + "with a payroll of " + salary + "";

        }

    }

 

    public class Department

    {

        private Employee[] emps;

        private string name;

 

        public Department(Employee[] theEmps, string name)

        {

            emps = theEmps;

            this.name = name;

        }

        public string Name

        {

            get { return name; }

        }

 

        // declaring a nested delegate type that accepts an Employee instance

        public delegate void EmployeeCallback(Employee e);

 

        // This method accepts an EmployeeCallback instance thus

        // providing the Callback mechanism

        public void ProcessEmployees(EmployeeCallback callback)

        {

            foreach (Employee x in emps)

            {

                callback(x);

            }

        }

    }

 

    public class Sys

    {

        private static void UpdatePayroll(Employee y)

        {

            y.Salary *= 1.2m;

 

            Console.WriteLine("The Employee {0} {1}'s salary increased to {2}",

            y.FirstName, y.LastName, y.Salary);

        }

 

        public static void Main()

        {

            Employee emp1 = new Employee("Marina", "Joe", 7000m);

            Employee emp2 = new Employee("Mina", "Nader", 7000m);

            Employee emp3 = new Employee("Johny", "Hany", 9000m);

 

            Employee[] emps = new Employee[3];

            emps[0] = emp1;

            emps[1] = emp2;

            emps[2] = emp3;

 

            Department dep = new Department(emps, "IT");

 

            foreach (Employee z in emps)

            {

                Console.WriteLine(z.ToString());

            }

 

            Console.WriteLine("\nCreating the delegate object");

            // creating the delegate instance

            Department.EmployeeCallback updateCallback =

                    new Department.EmployeeCallback(UpdatePayroll);

 

            Console.WriteLine("calling the method ProcessEmployees()\n");

            dep.ProcessEmployees(updateCallback);

 

            Console.ReadLine();

        }

    }

}

/*

Marina Joe with a payroll of 7000

Mina Nader with a payroll of 7000

Johny Hany with a payroll of 9000

 

Creating the delegate object

calling the method ProcessEmployees()

 

The Employee Marina Joe's salary increased to 8400.0

The Employee Mina Nader's salary increased to 8400.0

The Employee Johny Hany's salary increased to 10800.0

*/

Answers (2)