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

    Implementing and Integrating RabbitMQ in .NET Core Application: Shopping Cart and Order API

    RabbitMQ is a robust message broker that enables communication between services in a decoupled, reliable manner. In this guide, we’ll implement RabbitMQ in a .NET Core application to connect two microservices: Shopping Cart API (Producer) and Order API (Consumer). 1. Prerequisites Install RabbitMQ locally or on a server. Default Management UI: http://localhost:15672 Default Credentials: guest/guest Install the RabbitMQ.Client package for .NET: dotnet add package RabbitMQ.Client 2. Architecture Overview Shopping Cart API (Producer): Sends a message when a user places an order. RabbitMQ : Acts as the broker to hold the message. Order API (Consumer): Receives the message and processes the order. 3. RabbitMQ Producer: Shopping Cart API Step 1: Install RabbitMQ.Client Ensure the RabbitMQ client library is installed: dotnet add package RabbitMQ.Client Step 2: Create the Producer Service Add a RabbitMQProducer class to send messages. RabbitMQProducer.cs : using RabbitMQ.Client; usin...

    How Does My .NET Core Application Build Once and Run Everywhere?

    One of the most powerful features of .NET Core is its cross-platform nature. Unlike the traditional .NET Framework, which was limited to Windows, .NET Core allows you to build your application once and run it on Windows , Linux , or macOS . This makes it an excellent choice for modern, scalable, and portable applications. In this blog, we’ll explore how .NET Core achieves this, the underlying architecture, and how you can leverage it to make your applications truly cross-platform. Key Features of .NET Core for Cross-Platform Development Platform Independence : .NET Core Runtime is available for multiple platforms (Windows, Linux, macOS). Applications can run seamlessly without platform-specific adjustments. Build Once, Run Anywhere : Compile your code once and deploy it on any OS with minimal effort. Self-Contained Deployment : .NET Core apps can include the runtime in the deployment package, making them independent of the host system's installed runtime. Standardized Libraries ...

    .NET 10: Your Ultimate Guide to the Coolest New Features (with Real-World Goodies!)

     Hey .NET warriors! 🤓 Are you ready to explore the latest and greatest features that .NET 10 and C# 14 bring to the table? Whether you're a seasoned developer or just starting out, this guide will show you how .NET 10 makes your apps faster, safer, and more productive — with real-world examples to boot! So grab your coffee ☕️ and let’s dive into the awesome . 💪 1️⃣ JIT Compiler Superpowers — Lightning-Fast Apps .NET 10 is all about speed . The Just-In-Time (JIT) compiler has been turbocharged with: Stack Allocation for Small Arrays 🗂️ Think fewer heap allocations, less garbage collection, and blazing-fast performance . Better Code Layout 🔥 Hot code paths are now smarter, meaning faster method calls and fewer CPU cache misses. 💡 Why you care: Your APIs, desktop apps, and services now respond quicker — giving users a snappy experience . 2️⃣ Say Hello to C# 14 — More Power in Your Syntax .NET 10 ships with C# 14 , and it’s packed with developer goodies: Field-Bac...