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

    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...

    C# : Understanding Types of Classes

    In C#, classes serve as the building blocks of object-oriented programming, providing a blueprint for creating objects. Understanding the types of classes and their applications is crucial for designing robust and maintainable software. In this blog, we’ll delve into various types of classes in C#, accompanied by real-world scenarios and code snippets for a practical understanding. 1. Regular (Instance) Classes Definition: Regular classes are the most common type and are used to create instances or objects. They can contain fields, properties, methods, and other members. Example Scenario: A Person class representing individual persons with properties like Name and Age. public class Person { public string Name { get ; set ; } public int Age { get ; set ; } } 2. Static Classes Definition: A static class cannot be instantiated and can only contain static members (methods, properties, fields). It’s often used for utility functions. Example Scenario: A MathUtility cla...