Top C# Interview Questions & Answers

Top C# Interview Questions & Answers

1. What is C#?

C# is an object oriented type safe and managed language that is compiled by .Net framework to generate Microsoft Intermediate Language.

2. What are the types of comments in C# with examples?

  • Single line
    //This is a Single line comment
  • Multiple line (/* */)
    /*This is a multiple line comment
    We are in line 2
    Last line of comment*/
  • XML Comments (///).
    /// summary;
    ///  Set error message for multilingual language.
    /// summary

3.       Can multiple catch blocks be executed?

No, Multiple catch blocks can’t be executed. Once the proper catch code executed, the control is transferred to the finally block and then the code that follows the finally block gets executed.

4.       What is the difference between public, static and void?

All these are access modifiers in C#.

  • Public declared variables or methods are accessible anywhere in the application.
  • Static declared variables or methods are globally accessible without creating an instance of the class. The compiler stores the address of the method as the entry point and uses this information to begin execution before any objects are created.
  • Void is a type modifier that states that the variable or method does not return any value.

5.       What is an object?  

An object is an instance of a class through which we access the methods of that class. “New” keyword is used to create an object. A class that creates an object in memory will contain the information about the methods, variables and behavior of that class.

6. Define Constructors?  

A constructor is a member function in a class that has the same name as its class. The constructor is automatically invoked whenever an object class is created. It constructs the values of data members while initializing the class.

7. What are Jagged Arrays?

The array which has elements of type array is called jagged array. The elements can be of different dimensions and sizes. We can also call jagged array as Array of arrays.

8. What is the difference between ref & out parameters?

An argument passed as ref must be initialized before passing to the method whereas out parameter needs not to be initialized before passing to a method.

9. What is the use of using statement in C#?  

The using block is used to obtain a resource and use it and then automatically dispose of when the execution of block completed.

10.What is serialization?  

When we want to transport an object through network then we have to convert the object into a stream of bytes. The process of converting an object into a stream of bytes is called Serialization. For an object to be serializable, it should inherit ISerialize Interface.

De-serialization is the reverse process of creating an object from a stream of bytes.

11.   Can “this” be used within a static method?  

No. We can’t use ‘This’ in a static method because we can only use static variables/methods in a static method.

12.   What is difference between constants and read-only?  

Constant variables are declared and initialized at compile time. The value can’t be changed afterwards. Read-only variables will be initialized only from the Static constructor of the class. Read only is used only when we want to assign the value at run time.

13.   What is an interface class?  

Interface is an abstract class which has only public abstract methods and the methods only have the declaration and not the definition. These abstract methods must be implemented in the inherited classes.

14.   What are value types and reference types?  

Value types are stored in the Stack whereas reference types stored on heap.
Value types:

[csharp] int, enum , structs, byte, decimal, double, float, long[/csharp]

Reference Types:

[csharp] string , class, interface, object.[/csharp]

15.   What are Custom Control and User Control?  

  • Custom Controls are controls generated as compiled code (Dlls), those are easier to use and can be added to toolbox. Developers can drag and drop controls to their web forms. Attributes can be set at design time. We can easily add custom controls to Multiple Applications (If Shared Dlls), If they are private then we can copy to dll to bin directory of web application and then add reference and can use them.
  • User Controls are very much similar to ASP include files, and are easy to create. User controls can’t be placed in the toolbox and dragged – dropped from it. They have their design and code behind. The file extension for user controls is ascx.

16.   What are sealed classes in C#?  

We create sealed classes when we want to restrict the class to be inherited. Sealed modifier used to prevent derivation from a class. If we forcefully specify a sealed class as base class then a compile-time error occurs.

17.   What is method overloading?  

Method overloading is creating multiple methods with the same name with unique signatures in the same class. When we compile, the compiler uses overload resolution to determine the specific method to be invoke.

18.   What is the difference between Array and Arraylist?  

In an array, we can have items of the same type only. The size of the array is fixed. An arraylist is similar to an array but it doesn’t have a fixed size.

19.   Can a private virtual method be overridden?  

No, because they are not accessible outside the class.

20. Describe the accessibility modifier “protected internal”.

Protected Internal variables/methods are accessible within the same assembly and also from the classes that are derived from this parent class.

21. What are the differences between System.String and System.Text.StringBuilder classes?

System.String is immutable. When we modify the value of a string variable then a new memory is allocated to the new value and the previous memory allocation released. System.StringBuilder was designed to have concept of a mutable string where a variety of operations can be performed without allocation separate memory location for the modified string.

22. What’s the difference between the System.Array.CopyTo() and System.Array.Clone() ?

Using Clone() method, we creates a new array object containing all the elements in the original array and using CopyTo() method, all the elements of existing array copies into another existing array. Both the methods perform a shallow copy.

23. How can we sort the elements of the array in descending order?

Using Sort() methods followed by Reverse() method.

24. Write down the C# syntax to catch exception?

To catch an exception, we use try catch blocks. Catch block can have parameter of system.Exception type.



catch(Exception ex)


In the above example, we can omit the parameter from catch statement.

25.   What’s the difference between an interface and abstract class?

Interfaces have all the methods having only declaration but no definition. In an abstract class, we can have some concrete methods. In an interface class, all the methods are public. An abstract class may have private methods.

 26.   What is the difference between Finalize() and Dispose() methods?

Dispose() is called when we want for an object to release any unmanaged resources with them. On the other hand Finalize() is used for the same purpose but it doesn’t assure the garbage collection of an object.

27.   What are circular references?

Circular reference is situation in which two or more resources that are interdependent on each other causes the lock condition and make the resources unusable.

28.   What are generics in C#.NET?

Generics are used to make reusable code classes to decrease the code redundancy, increase type safety and performance. Using generics, we can create collection classes. To create generic collection, System.Collections.Generic namespace should be used instead of classes such as ArrayList in the System.Collections namespace. Generics promotes the usage of parameterized types.

28a. What are generic classes?

Generic classes encapsulate operations that are not specific to a particular data type. The most common use for generic classes is with collections like linked lists, hash tables, stacks, queues, trees, and so on. Operations such as adding and removing items from the collection are performed in basically the same way regardless of the type of data being stored.

29.   What is an object pool in .NET?

An object pool is a container having objects ready to be used. It tracks the object that is currently in use, total number of objects in the pool. This reduces the overhead of creating and re-creating objects.

30.   List down the commonly used types of exceptions in .Net?

ArgumentException, ArgumentNullException , ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException ,OverflowException , IndexOutOfRangeException ,InvalidCastException ,InvalidOperationException , IOEndOfStreamException , NullReferenceException , OutOfMemoryException , StackOverflowException etc.

31.   What are Custom Exceptions?

Sometimes there are some errors that need to be handled as per user requirements. Custom exceptions are used for them and are used defined exceptions.

32.   What are delegates?

Delegates are type safe function pointers

  • Delegates are same are function pointers in C++ but the only difference is that they are type safe unlike function pointers.
  • Delegates are required because they can be used to write much more generic type safe functions.

33.   How do you inherit a class into other class in C#?

Colon is used as inheritance operator in C#. Just place a colon and then the class name.

[csharp] public class DerivedClass : BaseClass[/csharp]


34.   What is the base class in .net from which all the classes are derived from?


35.   What is the difference between method overriding and method overloading?

In method overriding, we change the method definition in the derived class that changes the method behavior. Method overloading is creating a method with the same name within the same class having different signatures.

36. What are the different ways a method can be overloaded?

Methods can be overloaded using different data types for parameter, different order of parameters, and different number of parameters.

37. Why can’t you specify the accessibility modifier for methods inside the interface?

In an interface, we have virtual methods that do not have method definition. All the methods are there to be overridden in the derived class. That’s why they all are public.

38.   How can we set class to be inherited, but prevent the method from being over-ridden?

Declare the class as public and make the method sealed to prevent it from being overridden.

39. What happens if the inherited interfaces have conflicting method names?

Implement is up to you as the method is inside your own class. There might be problem when the methods from different interfaces expect different data, but as far as compiler cares you’re okay.

40. What is the difference between a Struct and a Class?

Structs are value-type variables and classes are reference types. Structs stored on the stack, causes additional overhead but faster retrieval. Structs cannot be inherited.

41.   How to use nullable types in .Net?

Value types can take either their normal values or a null value. Such types are called nullable types.

[csharp]Int? someID = null;

42.   How we can create an array with non-default values?

We can create an array with non-default values using Enumerable.Repeat.

43.   What is difference between is and as operators in c#?

“is” operator is used to check the compatibility of an object with a given type and it returns the result as Boolean.

“as” operator is used for casting of object to a type or a class.

44.   What’s a multicast delegate?

A delegate having multiple handlers assigned to it is called multicast delegate. Each handler is assigned to a method.

 45.   What are indexers in C# .NET?

Indexers are known as smart arrays in C#. It allows the instances of a class to be indexed in the same way as an array.


[csharp]public int this[int index]    // Indexer declaration[/csharp]

46.   What is difference between the “throw” and “throw ex” in .NET?

“Throw” statement preserves original error stack whereas “throw ex” have the stack trace from their throw point. It is always advised to use “throw” because it provides more accurate error information.

47.   What are C# attributes and its significance?

C# provides developers a way to define declarative tags on certain entities eg. Class, method etc. are called attributes. The attribute’s information can be retrieved at runtime using Reflection.

48.   How to implement singleton design pattern in C#?

In singleton pattern, a class can only have one instance and provides access point to it globally.


Public sealed class Singleton
Private static readonly Singleton _instance = new Singleton();

49.   What is the difference between directcast and ctype?

DirectCast is used to convert the type of an object that requires the run-time type to be the same as the specified type in DirectCast.

Ctype is used for conversion where the conversion is defined between the expression and the type.

50.   Is C# code is managed or unmanaged code?

C# is managed code because Common language runtime can compile C# code to Intermediate language.


LOOPS (while, do, for, and foreach loops)

  • A while loop will check a condition and then continues to execute a block of code as long as the condition evaluates to a boolean value of true.
  • A do loop is similar to the while loop, except that it checks its condition at the end of the loop. This means that the do loop is guaranteed to execute at least one time.
  • A for loop works like a while loop, except that the syntax of the for loop includes initialization and condition modification.
  • A foreach loop is used to iterate through the items in a list. It operates on arrays or collections such as ArrayList

55. Can namespaces be nested?


56. Are alias names allowed for namespace names?

Example: (“shortnm” is the alias name)
Using shortnm = A.veryLong.NameSpace.Name.NeedstoShorter;

57. What Types can namespaces hold?

Classes, Structures (Struts), Interfaces, Enumerations, Delegates



11 more…

1. What are the advantages of C# over C, C++ or Java?

Like C++ and Java, C# is a high-level object-oriented programming language. It is generally more efficient than Java and has useful features such as operator overloading. C# is based on C++ but has several advantages over this older language: it is type-safe, more comprehensively object-oriented, and the syntax has been simplified in several important ways. Most importantly, C# interoperates exceptionally well with other languages on the .NET platform. For this reason, C# is a better choice for building applications for .NET.

You can review the principles of programming in C# in this online C# .NET – Programming for Beginners course.

2. How are namespaces used in C#?

Classes in the .NET framework can be organized using namespaces. The scope of a class is declared using the namespace keyword. You can then include methods from the namespace in your code by including the line “using [namespace];” at the start of your program.

3. What is a constructor?

A constructor is the method of a class that is called when an object of that class is created. The constructor initializes class parameters and has the same name as the class.

4. What is a destructor?

A destructor deletes an object of the class from memory. It is called when the object is explicitly deleted by the code you write, or when the object passes out of scope, which can happen when the program exits a function. The destructor has the same name as the class, but with a tilde ~ prefix.

5. How are methods overloaded in C#?

You can overload methods in C# by specifying different numbers or types of parameters in the method definition. Overloading can help to give your program the flexibility it needs to operate with different types of data input.

6. Why use encapsulation?

Encapsulation – combining function definitions and data together into a class – is used to separate parts of the code from the rest of the program. This allows the private data of an object to be hidden from the rest of the program, keep code clean and easy to understand, and allows classes to be reused in other programs.

You can learn about good programming technique in this online course.

7. What is the difference between a class and a struct?

Whereas classes are passed by reference, structs are passed by value. Classes can be inherited, but structs cannot. Structs generally give better performance as they are stored on the stack rather than the heap.

8. What is the GAC?

The acronym GAC stands for Global Assembly Cache. The GAC is where assemblies are stored so that many different applications can share these assemblies. Multiple versions of assemblies can be stored in the GAC, with applications specifying which version to use in the config file.

9. How does .NET help to manage DLLs on a system?

When you have multiple DLLs on a system, you are in what is known as “DLL Hell”. Managing the DLLs can be particularly difficult if there are multiple versions of the various DLLs. In the .NET framework, assemblies are managed using the information stored in their metadata, and you can store multiple versions of each in the GAC.

10. What types of error can occur in a C# program?

The three possible types of C# error are as follows:

  • Syntax error. This type of error, which is identified during compilation, occurs because the programmer has used syntax incorrectly or included a typo in the code.
  • Logic error. This type of error causes the program to do something other than what the programmer intended. The program will output an unexpected result in response to tests.
  • Runtime error. This type of error causes the program to crash or terminate incorrectly.

 11. How to tell if a user is logged in?


20 More:

Q1: Can DateTime variables be null?

A1: No, because it is a value type (Struct)

Q2: Describe the Page Life Cycle?


Q3: Describe the pipeline ? Give an Example when you need to extend it? How do you do so?


Q4: Describe the accessibility modifier protected internal

A4: Members are accessible to derived classes and classes within the same Assembly

Q5: Difference between an interface and abstract class?

A5: In the interface all methods must be abstract, in the abstract class some methods can be concrete. In the interface no accessibility modifiers are allowed, which is ok in abstract classes.
An interface is an empty shell, there are only the signatures (name / params / return type) of the methods. The methods do not contain anything. The interface can’t do anything. It’s just a pattern.
Abstract classes are classes. They look a lot like interfaces, but methods can contain a behavior.

Q6: How do you perform pre- and post-processing to extend a WebMethod ?

A6: Use SOAP extensions …

Q7: What are Design Patterns?

A7: It is a big topic in Object Oriented, so for more information see this,

Q8: What do you know about .net framework 3.0 ?

A8: any answer that introduces Windows Communication Foundation (WCF), Windows Workflow Foundation (WF), Windows Presentation Foundation (WPF) and Windows Card Space (WCS) is right, also you can mention that it was originally called WinFX

Q9: What do you know about ATLAS (Microsoft AJAX Extensions) ?

A9: for more information check here,

Q10: What do you know about Agile software methodologies?


Q11: What do you know about Web Services Enhancements (WSE)?

A11: WSE is an add-on to Visual Studio and the .net framework that allows developers to build secure web services.

Q12: What is AJAX ?

A12: Asynchronous Javascript And XML

Q13:What is NUnit, or What is Unit testing?

A13: Unit testing: is a procedure used to validate that a particular module of source code is working properly from each modification to the next. The procedure is to write test cases for all functions and methods so that whenever a change causes a regression, it can be quickly identified and fixed. Ideally, each test case is separate from the others; constructs such as mock objects can assist in separating unit tests. This type of testing is mostly done by the developers, NUnit is a famous tool for Unit Testing in .net

Q14: What is an Http Handler & Http Module?


Q15: What is mutable type ? immutable type ?

A15: Immutable type are types whose instance data, fields and properties, does not change after the instance is created. Most value types are immutable, but the mutable type are A type whose instance data, fields and properties, can be changed after the instance is created. Most Reference Types are mutable.

Q16: What is the HttpContext Object? Where is it accessible?

A16: It’s is an Object that Encapsulates all HTTP-specific information about an individual HTTP request. it is avaliable through out the request pipline.

Q17: What is the difference between String & StringBuilder classes?

A17: String is an immutable type while StringBuilder is a mutable type

Q18: Without using the multiplication or addition operations, how can you multiply a number x by 8?

A19: Shift x to the left 3 times, x << 3, because every shift left multiplies the number by 2

Q19: What’s the difference between C# 1.0 & C# 2.0?

A18: Any answer that introduces stuff like, Generics, Anonymous Methods, Nullable types, Iterators … etc, is correct

Q20: What is the difference between 1.x & 2.0 ?

A20: Any answer that include stuff like Provider model (membership provider, role provider … etc) and Master Pages, Code Beside model, new web controls will be ok.



1.     What is difference between Thread and process?

  • A process is the running image of a program loaded and executed in the system’s memory;
  • thread is the smallest unit of processing that can be scheduled by an operating system.
    Every process has at last one thread (the main thread) that exists so to allow the process to run and perform its tasks.

Does C# support multiple-inheritance?

No. C# limits classes to single-inheritance, meaning each class inherits from a single parent class. This is done to prevent ambiguity.

Who is a protected class-level variable available to?

It is available to any sub-class (a class inheriting this class).

Describe the accessibility modifier “protected internal”.

It is available to classes that are within the same assembly and derived from the specified base class.

Are private class-level variables inherited?

Yes, but they are not accessible. Although they are not visible or accessible via the class interface, they are inherited.

What is the top .NET class that everything is derived from?


What does the term immutable mean?

The data value may not be changed. Note: The variable value may be changed, but the original immutable data value was discarded and a new data value was created in memory.

What is the different between System.String and System.Text.StringBuilder classes?

System.String is immutable. System.StringBuilder was designed with the purpose of having a mutable string where a variety of operations can be performed.

Whats the advantage of using System.Text.StringBuilder over System.String?

StringBuilder is more efficient in cases where there is a large amount of string manipulation. Strings are immutable so each time a string is changed, a new instance is created in memory.

Can you store multiple data types in System.Array?


What is the difference between System.Array.CopyTo() and System.Array.Clone()?

  • The Clone() method returns a new array object containing all the elements in the original array.
  • The CopyTo() method copies the elements into another existing array. Both perform a shallow copy.

What is the difference between a shallow copy and a deep copy?

  • A shallow copy means that the contents (each array item) contains references to the same object as the elements in the original array.
  • A deep copy would create a new instance of each element’s object, resulting in a different, yet identical object.

How can you sort the elements of an array in descending order?

By calling the Sort() and then Reverse() methods.

What is the .NET collection class that allows an element to be accessed using a unique key?


What class is underneath the hood of the SortedList class?


What class is optimized for key-based item retrieval from both small and large collections?


What class is optimized for key-based item retrieval from small collections?


What class is optimized for key-based item retrieval from hybrid collections?


What is the C# syntax to catch any possible exception?

a catch block that catches the exception of type System.Exception. You can also omit the parameter data type in this case and just write catch{}.

Explain how a finally block works.

A try/catch block can be optionally followed by a finally block that will be executed whether or not the code in the try or catch blocks executes successfully.

Can multiple catch blocks be executed for a single try statement?

No. Once the proper catch block is executed, control is passed to the finally block (if there is any).

Explain the three services model commonly known as a three-tier application.

Presentation (UI), Business (logic and underlying code), and Data (from storage or other sources).

What is the syntax to inherit from a class in C#?

Place a colon and then the name of the base class. For example, “class MyNewClass : MyBaseClass”

Can you prevent your class from being inherited by another class?

Yes. The keyword “sealed” will prevent the class from being inherited.

Can you allow a class to be inherited, but prevent a method from being overridden?

Yes. Just leave the class public and make the method sealed.

What is an abstract class?

A class that cannot be instantiated. An abstract class is a class that must be inherited and have the methods overridden. An abstract class is basically a blueprint for a class without any implementation.

When do you absolutely have to declare a class as abstract?

  1. When the class itself is inherited from an abstract class, but not all base abstract methods have been overridden.
  2. When at least one of the methods in the class is abstract.

What is an interface class?

Interfaces, like classes, define a set of properties, methods, and events. But unlike classes, interfaces do not provide implementation. They are implemented by classes, and defined as separate entities from classes.

Can you specify the accessibility modifier for methods inside of an interface?

No. All methods must be public, and are therefore public by default.

Can you inherit multiple interfaces?

Yes, .NET supports multiple interface inheritance.

What is the difference between and interface and an abstract class?

In an interface class, all methods are abstract, there is no implementation at all. In an abstract class, some methods can be concrete. In an interface class, no accessibility modifiers are allowed. An abstract class may have accessibility modifiers.

What is the difference between a struct and a class?

Structs are value-type variables and are thus saved on the stack, additional overhead but faster retrieval. Also structs cannot inherit.

What is the implicit name of the parameter that gets passed into the set method/property of a class?

The data type of the “value” parameter is defined by whatever data type the property is declared as.

What does the keyword “virtual” declare for a method or property?

The method or property can be overridden and most importantly, the run-time type of the object determines which method is to be invoked.

Can you declare an override method to be static if the original method is not static?

No. The signature of the virtual method must remain the same. Only the keyword virtual is replaced by the keyword override.

What are the different ways a method can be overloaded?

A method can be overloaded with different parameter types, a different number of parameters, and different order of parameters.

If a base class has a number of overloaded constructors, and an inheriting class has a number of overloaded constructors; can you enforce a call from an inherited constructor to a specific base constructor?

Yes, just place a colon, and then keyword base (parameter list to invoke the appropriate constructor) in the overloaded constructor definition inside the inherited class. For example, public MyDerivedClass (int y) : base (y+1) where the parent class has a constructor that takes an int as a parameter.

What is a delegate?

A delegate object encapsulates a reference to a method.

What is a multicast delegate?

A delegate that has multiple handlers assigned to it. Each assigned handler (method) is called.

Is XML case-sensitive?


What is the difference between //, /**/, and /// comments?

// is for single-line comments, /**/ is for multi-line comments, and /// is for XML documentation comments

How do you generate documentation from the C# file commented properly with a command-line compiler?

Compile it with the /doc switch.

What debugging tools come with the .NET SDK?

1) CorDBG – command-line debugger. You must compile the original C# file using the /debug switch to use CorDBG. 2) DbgCLR – graphic debugger. Visual Studio .NET uses the DbgCLR.

What does the assert() method do?

In debug compilation, assert takes in a Boolean condition as a parameter, and shows the error dialog if the condition is false. The program proceeds without any interruption if the condition is true.

What is the difference between the Debug class and Trace class?

Documentation looks the same. Use Debug class for debug builds, use Trace class for both debug and release builds.

Why are there five tracing levels in System.Diagnostics.TraceSwitcher?

The tracing dumps can be quite verbose. For applications that are constantly running, you run the risk of overloading the machine and the hard-drive. Five levels range from None to Verbose, allowing you to fine-tune tracing activities.

Where is the output of TextWriterTraceListener redirected?

To the Console or a text file depending on the parameter passed to the constructor.

How do you debug an ASP.NET Web Application?

Attach the aspnet_wp.exe process to the DbgCLR debugger.

What are the three test cases you should go through in unit testing?

  1. Positive test cases (correct data, correct output).
  2. Negative test cases (broken or missing data, proper handling).
  3. Exception test cases (exceptions are thrown and caught properly).

Can you change the value of a variable while debugging a C# application?

Yes. If you are debugging via Visual Studio .NET, you can do this through the Immediate window.

What is the role of the DataReader class in ADO.NET conections?

It returns a read-only, forward-only rowset from the data source. A DataReader provides fast access when a forward-only sequential read is needed.

What are advantages and disadvantages of Microsoft-provided data provider classes in ADO.NET?

SQLServer.NET data provider is high-speed and robust, but requires SQL Server license purchased from Microsoft. OLE-DB.NET is universal for accessing other sources, like Oracle, DB2, Microsoft Access and Informix. OLE-DB.NET is a .NET layer on top of the OLE layer, so its not as fast and efficient as SQLServer.Net.

What is the wildcard character in SQL?

The wildcard character is ‘%’ . The proper query to return all users whose last name starts with “La” would involve “LIKE ‘La%'”

Explain ACID rule of thumb for transactions.

A transaction must be: 1) Atomic – it is one unit of work and does not depend on previous and following transactions. 2) Consistent – data is either committed or rolled back, no “in-betwee” case where something has been updated and something hasn’t. 3) Isolated – no transaction sees the intermediate results of the current transaction. 4) Durable – the values persist if the data has been committed even if the system crashes right after.

What connections does Microsoft SQL Server support?

Windows Authentication (via Active Directory) and SQL Server authentication (via Microsoft SQL Server username and password).

Between Windows Authentication and SQL Server Authentication, which one is trusted and which one is untrusted?

Windows Authentication is trusted because the username and password are checked with Active Directory. The SQL Server authentication is untrusted, since SQL Server is the only verifier participating in the transaction.

What does the Initial Catalog parameter define in the connection string?

The database name to connect to.

What does the Dispose() method do with the connection object?

Closes the connection and deletes the object from memory.

What is a pre-requisite for connection pooling?

Multiple processes must agree that they will share the same connection, where every parameter is the same, including the security settings. The connection string must be identical.

How is the DLL Hell problem solved in .NET?

Assembly versioning allows the application to specify not only the library it needs to run (which was available under Win32) but also the version of the assembly.

What are the ways to deploy an assembly?

An MSI installer, a CAB archive, and XCOPY command.

What is a satellite assembly?

When you write a multilingual or multi-cultural application in .NET, and want to distribute the core application separately from the localized modules, the localized assemblies that modify the core application are called satellite assemblies.

What namespaces are necessary to create a localized application?

System.Globalization and System.Resources.

What is the smallest unit of execution in .NET?

an Assembly.

When should you call the garbage collector in .NET?

As a good rule, you should not call the garbage collector. However, you could call the garbage collector when you are done using a large object (or sets of objects) to force the garbage collector to dispose of those very large objects from memory. This is usually not good practice.

How do you convert a value-type to a reference-type?

Use Boxing.

What happens in memory when you Box and Unbox a value-type?

Boxing converts a value-type to a reference-type, thus storing the object on the heap. Unboxing converts a reference-type to a value-type, thus storing the value on the stack.