C# Tutorial

C# Tutorial C# First Application C# Variables C# Data Types C# Operators C# Keywords

C# Control Statement

C# If Statements C# Switch Statements C# for Loop C# While Loop C# do While loop C# Jump Statements C# Function C# functions with out variable

C# Arrays

C# Arrays

C# Function

C# Function call by value C# Call by reference C# Passing array to function C# Multidimensional Arrays C# Jagged Arrays C# Params C# Array Class C# Command Line Arguments

C# Object Class

C# Object and Classes C# Constructors C# Destructor C# this Keyword C# static field C# static class C# Static Constructor C# Structs C# enum C# Properties

C# Inheritance

C# Inheritance C# Multilevel Inheritance C# Aggregation C# Member overloading C# Method Overriding C# Base

C# Polymorphism

C# Polymorphism C# Sealed

C# Abstraction

C# Abstraction C# Interface

C# Namespace

C# Namespace C# Access Modifiers C# Encapsulation

C# Strings

C# String

C# Misc

C# Design Patterns Dictionary in C# Boxing and Unboxing in C# Ref and Out in C# Serialization in C# Dispose and Finalize in C# CONSOLE LOG IN C# Get File extension in C# Insert query in c# Difference Between List and Dictionary in C# Getters and Setters in C# Extension Methods in C# Insert query in c# CONSOLE LOG IN C# Get File extension in C# Random.NextDouble() Method in C# Binary Search in C# Difference between Delegates and Interfaces in C# Double.IsFinite() Method in C# Index Constructor in C# Abstraction in C# Basic OOPS Concepts In C# Queue.CopyTo() Method in C# single.compareto() method in C# C# Throw Exception in Constructor DECODE IN C# file.setlastwritetimeutc() method in C# Convert Object to List in C# convert.ToSByte(string, IFormatProvider) Method in C# C# Declare Delegate in Interface console.TreatControl C As Input property in C# Copying the queue elements to 1-D Array in C# Array.Constrainedcopy() Method in C# C# in and out Char.IsLetterOrDigit() method in C# Debugging in C# decimal.compare() method in C# Difference between Console.Read and Console.Readline in C# Metadata in C# C# Event Handler Example Default Interface Methods in C# Difference between hashtable and dictionary in C# C# program to implement IDisposable Interface Encapsulation in C# SortedList.IndexOfVaalue(Object) Method in C# Hash Maps in C# How to clear text files in C# How to Convert xls to xlsx in C# Foreach loop in C# FIFO in C# How to handle null exception in C# Type.Is Instance Of Type() Method in C# How to add data into MySQL database using C# How to use angular js in ASP net Csharp decimal.compare() method in Csharp Difference between Console.Read and Console.Readline in Csharp How to Implement Interface in Csharp char.IsUpper() Method in C# Index Of Any() Method in C# Quantifiers in C# C# program to Get Extension of a Given File C# Error Logging C# ENCRIPTION Can we create an object for Abstract Class in C# Console.CursorVisible in C# SortedDictionary Implementation in C# C# Hash Table with Examples Setting the Location of the Label in c# Collections in c# Virtual Keyword in C# Reverse of string in C# String and StringBuilder in C# Encapsulation in C# SortedList.IndexOfVaalue(Object) Method in C# Hash Maps in C# How to clear text files in C# How to Convert xls to xlsx in C# Foreach loop in C# FIFO in C# How to handle null exception in C# Type.Is Instance Of Type() Method in C# How to add data into MySQL database using C# How to use angular js in ASP net Csharp decimal.compare() method in Csharp Difference between Console.Read and Console.Readline in Csharp How to Implement Interface in Csharp char.IsUpper() Method in C# Index Of Any() Method in C# Quantifiers in C# C# program to Get Extension of a Given File Difference between ref and out in C# Singleton Class in C# Const And Readonly In Csharp BinaryReader and BinaryWriter in C# C# Attributes C# Delegates DirectoryInfo Class in C# Export and Import Excel Data in C# File Class in C# FileInfo Class in C# How to Cancel Parallel Operations in C#? Maximum Degree of Parallelism in C# Parallel Foreach Loop in C# Parallel Invoke in C# StreamReader and StreamWriter in C# TextReader and TextWriter in C# AsQueryable() in C# Basic Database Operations Using C# C# Anonymous Methods C# Events C# Generics C# Indexers C# Multidimensional Indexers C# Multithreading C# New Features C# Overloading of Indexers Difference between delegates and events in C# Operator overloading in C# Filter table in C# C# Queue with Examples C# Sortedlist With Examples C# Stack with Examples C# Unsafe Code File Handling in C# HashSet in C# with Examples List Implementation in C# SortedSet in C# with Examples C# in Depth Delegates and Events in C# Finally Block in C# How to Split String in C# Loggers in C# Nullable Types in C# REVERSE A STRING IN C# TYPE CASTING IN C# What is Generics in C# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# Atomic Methods Thread Safety and Race Conditions in C# Parallel LINQ in C# Design Principles in C# Difference Between Struct And Class In C# Difference between Abstraction and Encapsulation in C# Escape Sequence Characters in C# What is IOC in C# Multiple Catch blocks in C# Appdomain in C# Call back methods in C# Change Datetime format in C# Declare String array in C# Default Access Specifier in c# Foreach in LINQ C# How to compare two lists in C# How to Convert String to Datetime in c# How to get only Date from DateTime in C# Ispostback in asp net C# JSON OBJECT IN C# JSON STRINGIFY IN C# LAMBDA FUNCTION IN C# LINQ Lambda Expression in C# Microservices in C# MSIL IN C# Reference parameter in C# Shadowing(Method hiding) in C# Solid principles in C# Static Members in C# Task run in C# Transaction scope in C# Type Conversion in c# Unit of Work in C# Unit Test Cases in c# User Defined Exception in c# Using Keyword in C# Var Keyword in C# What is gac in C#

C# Declare Delegate in Interface

A reference type variable that can store a reference to one of the methods is called a Delegate. It is an object that points to a method. Comparable to the function pointer in C/C++, delegates are used in C#. It offers a mechanism to specify which method should be invoked if an event occurs. For instance:

using System;

class TE {

          public delegate void Addition(int p, int q);

          public void Samp(int p, int q)

          {

                    Console.WriteLine("[{0} + {1}] = [{2}]",p,q, p + q);

          }

          public static void Main(String[] args)

          {

                    TE t = new TE();

                    Addition oj = new Addition(t.Samp);

                    oj(38, 92);

          }

}

Output:

An interface can have members such as methods, properties, events, and indexers, much like a class. However, interfaces will only include the members' declarations. The class that implements the Interface, whether explicitly or implicitly, will provide the implementation for its members. For instance:

using System;

interface itfc {

          void display();

}

class TE : itfc {

          public void display()

          {

                    Console.WriteLine("Hello guys!");

          }

          public static void Main(String[] args)

          {

                    TE t = new TE();

                    t.display();

          }

}

Output:

Similarities:

Both interfaces and delegates share the following characteristics:

  • The declaration is the only thing that delegates and interfaces contain. It takes a different programming object to implement them.
  • A class designer can distinguish between type declarations and implementation with both.
  • Any class can inherit and implement an interface, and any method on any class can have a delegate generated for it as long as the method complies with the Delegate's method signature.
  • An object is using an interface or a delegate. Neither of them is familiar with the class that uses.
  • In essence, a Delegate specifies the capabilities of a certain method, while an Interface specifies its methods and characteristics.

When is it appropriate to use delegates instead of interfaces?

The situation or situations listed below call for the use of Delegate rather than Interface:

  • The Delegate should be used if the Interface defines just one method.
  • If the need for multicast exists.
  • If a subscriber needs to use the Interface more than once.

Delegate is a fairly simple replacement for Interface if Interface just has one method. Let us understand this with the example below:

Using Interfaces

using System;

interface ITFC

{

    int Addition(int x, int y);

}

public class Class : ITFC

{

    public int Addition(int x, int y)

    {

        return x + y;

    }

}

class Program

{

    static void Main(string[] args)

    {

        ITFC myInterface = new Class();

        Console.WriteLine(myInterface.Addition(28, 13));

        Console.ReadKey();

    }

}

Output:

Using Delegates

using System;

public delegate int Deleg(int x, int y);

public class Class

{

    public static int Sum(int x, int y)

    {

        return x + y;

    }

}

class Program

{

    static void Main(string[] args)

    {

        Deleg deleg = Class.Sum;

        Console.WriteLine(deleg(15, 67));

        Console.ReadKey();

    }

}

Output:

How is a Delegate added to an Interface?

First, the Interface's goals do not include reminding you of your desired requirements or goals for the class. It serves as an abstraction tool. In object-oriented programming, it serves as the foundation for design.

These have no place in an interface since they essentially specify delegate types. An event of the Delegate type can be used in an interface.

              Delegate                  Interface 

You can utilize a delegate if one is accessible within your scope.  An interface is utilized if and only if your class implements it.  It can handle events with ease.  Events are not managed by it.  You don't need access to the class object where the method is defined to use delegates to access the method.  It would help if you had the class object that implements the Interface to use the method.  Any method that yields the same signature with the specified Delegate can be implemented by it.  The same name and signature method override if the interface method is implemented.  It does not consider whatever class the method belongs to; it can encapsulate any method whose signature resembles the Delegate's.  Although a class can implement as many interfaces as it wants, it can only override methods that are part of the interfaces.  You can use delegates as often as you like.  An interface can only be used once.  It might just be a method.  It includes both attributes and methods.  At runtime, it was constructed.  At compilation time, it was constructed.  It has access to anonymous methods.  It is unable to use anonymous methods.  Static methods and sealed class methods can be wrapped using it.  Static methods and sealed class methods are not covered by it.  It applies to a single method at one point in time.  A class will implement all of the methods associated with an interface if it implements it.  It opposes inheritance.  It encourages inheritance.