Skip to main content

C# : Interview questions (21-25)

 

  Questions :

    • What is a static class in C#?
    • How do you achieve multiple inheritance in C#?
    • Explain the difference between an abstract class and an interface.
    • What is the purpose of the "using" statement in C#?
    • How does exception handling work in C#?

    Answers :

    Static Class in C#:

    A static class in C# is a class that cannot be instantiated and can only contain static members such as static fields, static methods, and static properties. Static classes are commonly used to organize utility methods or constants that do not require an instance of the class to be created.

    public static class MathHelper 
    {
        public static int Add(int a, int b) 
        {
            return a + b;
        }
    }
    

    In this example, MathHelper is a static class containing a static method Add, which can be accessed without creating an instance of the class (MathHelper.Add(2, 3)).

    Achieving Multiple Inheritance in C#:

    C# does not support multiple inheritance, where a class can inherit from multiple classes. However, you can achieve similar functionality using interfaces, which allow a class to inherit from multiple interfaces.

    interface IShape 
    {
        void Draw();
    }
    
    interface IMovable 
    {
        void Move();
    }
    
    class Circle : IShape, IMovable 
    {
        public void Draw() 
        {
            // Implementation for drawing a circle...
        }
    
        public void Move() 
        {
            // Implementation for moving the circle...
        }
    }
    

    In this example, the Circle class implements both the IShape and IMovable interfaces, effectively achieving multiple inheritance of behavior.

    Difference between Abstract Class and Interface:

    • Abstract Class:

      • An abstract class in C# is a class that cannot be instantiated and may contain abstract methods (methods without a body).
      • An abstract class can contain both abstract and non-abstract (concrete) methods and properties.
      • A class can inherit from only one abstract class.
      • Abstract classes can have access modifiers (public, protected, etc.) for their members.
      • Abstract classes can have fields and constructors.
    • Interface:

      • An interface in C# is a reference type that defines a contract for classes to implement. It contains method signatures, properties, events, and indexers without any implementation.
      • A class can implement multiple interfaces.
      • Interfaces cannot contain fields, constructors, or concrete methods (except for default interface methods introduced in C# 8.0).
      • Interfaces are implicitly public and cannot have access modifiers for their members.

    Purpose of the "using" Statement in C#:

    The "using" statement in C# is used to import namespaces or to manage resources that implement the IDisposable interface. It has two primary purposes:

    • Namespace Importing: The "using" statement simplifies code by allowing you to reference types in a namespace without fully qualifying their names. It helps avoid naming conflicts and makes code more readable.
    using System;
    
    class Program 
    {
        static void Main() 
        {
            Console.WriteLine("Hello, World!");
        }
    }
    
    • Resource Management: The "using" statement can be used to ensure that resources like file handles, database connections, or network sockets are properly disposed of when they are no longer needed, by automatically calling the Dispose method of objects that implement IDisposable.
    using (var stream = new FileStream("file.txt", FileMode.Open)) 
    {
        // Read from the file...
    }
    

    Exception Handling in C#:

    Exception handling in C# allows you to gracefully handle runtime errors and abnormal conditions that occur during the execution of a program. It involves the use of try, catch, finally, and throw keywords.

    • try: The try block encloses the code that might throw an exception.
    • catch: The catch block catches and handles exceptions that are thrown within the try block. It specifies the type of exception to catch.
    • finally: The finally block contains code that is always executed, regardless of whether an exception occurs. It is typically used to release resources or perform cleanup operations.
    • throw: The throw keyword is used to manually throw an exception.
    try 
    {
        // Code that might throw an exception
    }
    catch (Exception ex) 
    {
        // Handle the exception
    }
    finally 
    {
        // Cleanup code
    }
    
    In summary, exception handling in C# allows you to handle errors and ensure the robustness and reliability of your applications.

    Comments

    Popular posts from this blog

    Clean Architecture: What It Is and How It Differs from Microservices

    In the tech world, buzzwords like   Clean Architecture   and   Microservices   often dominate discussions about building scalable, maintainable applications. But what exactly is Clean Architecture? How does it compare to Microservices? And most importantly, is it more efficient? Let’s break it all down, from understanding the core principles of Clean Architecture to comparing it with Microservices. By the end of this blog, you’ll know when to use each and why Clean Architecture might just be the silent hero your projects need. What is Clean Architecture? Clean Architecture  is a design paradigm introduced by Robert C. Martin (Uncle Bob) in his book  Clean Architecture: A Craftsman’s Guide to Software Structure and Design . It’s an evolution of layered architecture, focusing on organizing code in a way that makes it  flexible ,  testable , and  easy to maintain . Core Principles of Clean Architecture Dependency Inversion : High-level modules s...

    C# : How can we access private method outside class

    Introduction In object-oriented programming, encapsulation is a fundamental principle that restricts direct access to the internal implementation details of a class. Private methods, being part of this internal implementation, are designed to be accessible only within the confines of the class they belong to. However, there might be scenarios where you need to access a private method from outside the class. In this blog post, we'll explore several techniques to achieve this in C#. 1. Reflection: A Powerful Yet Delicate Approach Reflection is a mechanism in C# that allows inspecting and interacting with metadata about types, fields, properties, and methods. While it provides a way to access private methods, it should be used cautiously due to its potential impact on maintainability and performance. using System ; using System . Reflection ; public class MyClass { private void PrivateMethod ( ) { Console . WriteLine ( "This is a private method."...

    20+ LINQ Concepts with .Net Code

    LINQ   (Language Integrated Query) is one of the most powerful features in .NET, providing a unified syntax to query collections, databases, XML, and other data sources. Below are 20+ important LINQ concepts, their explanations, and code snippets to help you understand their usage. 1.  Where  (Filtering) The  Where()  method is used to filter a collection based on a given condition. var numbers = new List < int > { 1 , 2 , 3 , 4 , 5 , 6 } ; var evenNumbers = numbers . Where ( n => n % 2 == 0 ) . ToList ( ) ; // Output: [2, 4, 6] C# Copy 2.  Select  (Projection) The  Select()  method projects each element of a sequence into a new form, allowing transformation of data. var employees = new List < Employee > { /* ... */ } ; var employeeNames = employees . Select ( e => e . Name ) . ToList ( ) ; // Output: List of employee names C# Copy 3.  OrderBy  (Sorting in Ascending Order) The  Or...