What is C#?
C# is a modern, object-oriented programming language that was developed by Microsoft. It is used to build applications for Windows, the web, and other platforms.
What are the key features of C#?
C# has several key features, including object-oriented programming, type safety, automatic memory management, and strong support for software components and assemblies.
What is the difference between value types and reference types in C#?
Value types are types that directly contain their data, such as integers, floats, and booleans. Reference types, on the other hand, store a reference to an object in memory, rather than the object itself.
What is the difference between a class and a struct in C#?
Classes are reference types that can have methods, properties, and fields. Structs are value types that can also have methods, properties, and fields, but they are typically used for small, simple data structures.
What is the difference between abstract classes and interfaces in C#?
Abstract classes are classes that cannot be instantiated, but can be used as a base class for other classes. Interfaces are similar, but they define a contract that a class must implement, rather than providing any implementation themselves.
What is inheritance in C#?
Inheritance is a mechanism by which a class can derive properties and behaviors from another class. The derived class, also known as the subclass, inherits all of the properties and behaviors of the base class, also known as the superclass.
What is polymorphism in C#?
Polymorphism is the ability of a method or object to take on different forms depending on the context in which it is used.
What is encapsulation in C#?
Encapsulation is the practice of hiding the internal details of a class or object from the outside world, and exposing only the necessary functionality through public methods and properties.
What is a constructor in C#?
A constructor is a special method that is used to create and initialize objects of a class. It is called automatically when an object is created, and is used to set the initial values of the object’s fields and properties.
What is a destructor in C#?
A destructor is a special method that is used to clean up an object before it is destroyed. It is called automatically when the object is no longer needed, and is used to release any resources that the object may have acquired during its lifetime.
What is a delegate in C#?
A delegate is a type that represents a method signature, and can be used to pass methods as arguments to other methods or to store them as variables.
What is an event in C#?
An event is a mechanism for notifying other objects that a particular action has occurred. It allows objects to register handlers for the event, which are called when the event is raised.
What is a namespace in C#?
A namespace is a way to organise classes and other types in a C# project. It allows multiple classes with the same name to coexist in the same project, as long as they are in different namespaces.
What is the difference between private and protected access modifiers in C#?
Private access modifiers restrict access to a member to only the class that defines it. Protected access modifiers allow access to the member from the defining class and any derived classes.
What is the difference between an abstract class and a sealed class in C#?
Abstract classes cannot be instantiated, but can be used as a base class for other classes. Sealed classes cannot be inherited from.
What is the difference between a static class and a non-static class in C#?
Static classes cannot be instantiated, and can only contain static members. Non-static classes can be instantiated, and can contain both static and non-static members.
What is the difference between an interface and an abstract class in C#?
Interfaces define a contract that a class must implement, while abstract classes can also provide some implementation themselves. Classes can implement multiple interfaces, but can only inherit from a single abstract class.
What is the difference between a value type and a reference type in C#?
Value types are stored on the stack, and are passed by value. Reference types are stored on the heap, and are passed by reference.
What is the difference between a struct and a class in C#?
Structs are value types, while classes are reference types. Structs are typically used for small, simple data structures, while classes are used for more complex objects.
What is a property in C#?
A property is a member of a class that provides access to a private field or other data. It allows the class to control how the data is accessed and modified, and can provide validation and other logic.
What is a method in C#?
A method is a member of a class that performs a specific action or computation. It can take arguments, and can return a value.
What is a field in C#?
A field is a member of a class that stores data. It can be public or private, and can have a default value.
What is the difference between a field and a property in C#?
Fields and properties both store data in a class, but properties provide a more controlled way of accessing and modifying the data. Properties can have custom logic for getting and setting the value, while fields do not.
What is a generic type in C#?
A generic type is a type that can be parameterised with one or more type parameters. This allows the same class or method to work with different types of data, without having to write separate code for each type.
What is the difference between a generic type and a non-generic type in C#?
Generic types can work with multiple types of data, while non-generic types can only work with a specific type of data. Generic types are often more flexible and reusable than non-generic types.
What is the difference between an interface and a class in C#?
Interfaces define a contract that a class must implement, while classes provide implementation and can be instantiated. Classes can inherit from other classes, while interfaces cannot.
What is a collection in C#?
A collection is a group of related objects, typically stored in an array or other data structure. C# provides several built-in collection classes, such as List and Dictionary, as well as the ability to create custom collections.
What is a LINQ in C#?
LINQ (Language Integrated Query) is a set of extensions to C# that provide a powerful, SQL-like syntax for querying and manipulating data in memory and in databases.
What is the difference between IEnumerable and IQueryable in C#?
IEnumerable is used for querying data that is already in memory, while IQueryable is used for querying data that is stored in a database or other external data source.
What is a lambda expression in C#?
A lambda expression is a concise way to define a delegate or an expression tree, without having to write a separate method. It allows for more flexible and readable code, especially when working with LINQ.
What is the difference between a lambda expression and an anonymous method in C#?
Lambda expressions are a more concise and expressive way to define delegates or expression trees, while anonymous methods are a more traditional way to define delegates.
What is a try-catch block in C#?
A try-catch block is a mechanism for handling exceptions in C#. Code that is likely to throw an exception is placed in a try block, and any exceptions that are thrown are caught and handled in a catch block.
What is an exception in C#?
An exception is a type of error that occurs when a program encounters an unexpected situation, such as trying to divide by zero or accessing a null reference.
What is the difference between a runtime exception and a compile-time exception in C#?
Compile-time exceptions are errors that are detected by the compiler, and prevent the program from being compiled. Runtime exceptions are errors that occur during program execution, and can cause the program to crash or behave unpredictably.
What is the purpose of the using statement in C#?
The using statement is used to ensure that a disposable object is properly disposed of, even if an exception is thrown. It can be used with any object that implements the IDisposable interface.
What is a delegate in C#?
A delegate is a type that represents a method signature, and can be used to pass methods as arguments to other methods or to store them as variables.
What is the difference between an event and a delegate in C#?
An event is a mechanism for notifying other objects that a particular action has occurred. It is based on the delegate type, and allows objects to register handlers for the event.
What is a thread in C#?
A thread is a separate path of execution within a program. C# provides several ways to create and manage threads, including the Thread class and the Task Parallel Library (TPL).
What is a mutex in C#?
A mutex (short for mutual exclusion) is a synchronisation primitive that is used to protect shared resources from simultaneous access by multiple threads. It can be used to ensure that only one thread at a time is allowed to access a critical section of code.
What is a semaphore in C#?
A semaphore is a synchronisation primitive that is used to control access to a shared resource by multiple threads. It allows a specified number of threads to access the resource simultaneously, while blocking additional threads until a thread exits the critical section.
What is a monitor in C#?
A monitor is a synchronisation primitive that is used to protect shared resources from simultaneous access by multiple threads. It provides a mechanism for threads to acquire and release ownership of a resource in a coordinated way, using the lock keyword.
What is a background thread in C#? A background thread is a thread that is created using the Thread class, and runs in the background without blocking the main thread of the program. It can be used to perform long-running tasks without interfering with the user interface or other critical tasks.
What is a task in C#? A task is a unit of work that can be executed asynchronously. It is part of the Task Parallel Library (TPL), and provides a higher-level abstraction for working with threads and other asynchronous programming patterns.
What is a parallel loop in C#? A parallel loop is a construct provided by the Task Parallel Library (TPL) that allows for parallel execution of a loop over a collection of items. It automatically splits the work into multiple threads or processes, and aggregates the results when the loop is complete.
What is the async/await pattern in C#? The async/await pattern is a language feature introduced in C# 5.0 that provides a simplified way to write asynchronous code. It allows methods to be marked as async, and uses the await keyword to suspend execution until an asynchronous operation is complete.
What is the difference between synchronous and asynchronous code in C#? Synchronous code executes sequentially, blocking the current thread until a particular operation is complete. Asynchronous code allows the current thread to continue executing while the operation is performed in the background, and uses callbacks or other mechanisms to notify the caller when the operation is complete.
What is serialization in C#? Serialization is the process of converting an object or a set of objects into a format that can be easily stored or transmitted, such as JSON or binary. C# provides several built-in serialization mechanisms, including the BinaryFormatter and the DataContractSerializer.
What is deserialization in C#? Deserialisation is the process of converting a serialized object or set of objects back into their original form. C# provides several built-in deserialization mechanisms, including the BinaryFormatter and the DataContractSerializer.
What is garbage collection in C#? Garbage collection is the process of automatically freeing up memory that is no longer being used by a program. It is managed by the .NET runtime, and ensures that programs do not run out of memory or leak memory over time.
What is the IDisposable interface in C#? The IDisposable interface is a marker interface that is used to indicate that an object requires cleanup or disposal when it is no longer needed. It is typically used for objects that allocate unmanaged resources, such as file handles or network connections.
What is the finalizer method in C#? The finalizer method (also known as the destructor) is a special method that is called by the garbage collector when an object is about to be destroyed. It can be used to perform cleanup or disposal of unmanaged resources.
What is reflection in C#?
Reflection is a feature in C# that allows for runtime introspection of types, objects, and assemblies. It provides a way to examine the metadata of a type, retrieve its properties and methods, and invoke them dynamically at runtime.
What is an attribute in C#? An attribute is a way to attach metadata to types, methods, properties, and other program elements in C#. It can be used to provide additional information about the program, such as debugging information or runtime behavior.
What is an extension method in C#? An extension method is a special type of static method that allows new methods to be added to existing types without modifying the type definition itself. It is often used to extend the functionality of existing classes or interfaces, such as the string or IEnumerable types.
What is a lambda expression in C#? A lambda expression is a concise way to define an anonymous method or function in C#. It is often used in LINQ queries and other functional programming constructs.
What is the difference between IQueryable and IEnumerable in C#? IQueryable and IEnumerable are both interfaces that are used to query data in LINQ. IQueryable is used for querying data that comes from a database or other remote source, while IEnumerable is used for querying in-memory collections.
What is a delegate in C#? A delegate is a type that represents a reference to a method or function in C#. It can be used to pass methods as arguments to other methods, or to define callbacks for asynchronous operations.
What is a multicast delegate in C#? A multicast delegate is a delegate that can reference multiple methods or functions. When a multicast delegate is invoked, all of the methods that it references are called in the order in which they were added to the delegate.
What is boxing in C#? Boxing is the process of converting a value type to a reference type, typically so that it can be stored in a collection or passed as an object parameter. It can be an expensive operation, as it involves creating a new object on the heap and copying the value into it.
What is unboxing in C#? Unboxing is the process of converting a reference type back into a value type. It involves extracting the value from the object on the heap and copying it back into the stack.
What is the difference between an abstract class and an interface in C#? An abstract class is a class that cannot be instantiated, and is typically used as a base class for other classes. It can contain both abstract and non-abstract members, and can provide default implementations for some of its members.
An interface is a contract that defines a set of members that a class must implement. It contains only method and property signatures, and cannot provide any implementation for its members.
What is a sealed class in C#? A sealed class is a class that cannot be inherited from, and is typically used for classes that provide a specific implementation that should not be modified.
What is a static class in C#? A static class is a class that can only contain static members, and cannot be instantiated. It is typically used for utility classes that provide global functionality or