C# (Sharp) Programming Language Interview Questions And Answers
Download C# (Sharp) Programming Language Interview Questions and Answers PDF
Refine your C# (Sharp) Programming Language interview skills with our 163 critical questions. These questions are specifically selected to challenge and enhance your knowledge in C# (Sharp) Programming Language. Perfect for all proficiency levels, they are key to your interview success. Get the free PDF download to access all 163 questions and excel in your C# (Sharp) Programming Language interview. This comprehensive guide is essential for effective study and confidence building.
163 C# (Sharp) Programming Language Questions and Answers:
C# (Sharp) Programming Language Job Interview Questions Table of Contents:
1 :: What's C#?
C# (pronounced C-sharp) is a new object oriented language from Microsoft and is derived from C and C++. It also borrows a lot of concepts from Java too including garbage collection. More at http://msdn.microsoft.com/vstudio/nextgen/technology/csharpintro.asp, http://msdn.microsoft.com/library/default.asp?URL=/library/dotnet/csspec/vclrfcsharpspec_Start.htm and http://msdn.microsoft.com/vstudio/nextgen/technology/csharpdownload.asp
Read More2 :: Is it possible to inline assembly or IL in C# code?
No there is not possible to inline assembly or IL in C# code.
Read More3 :: Is it possible to have different access modifiers on the get/set methods of a property in C#?
No. The access modifier on a property applies to both its get and set accessors. What you need to do if you want them to be different is make the property read-only (by only providing a get accessor) and create a private/internal set method that is separate from the property.
Read More4 :: Is it possible to have a static indexer in C#?
No. Static indexers are not in C# (Sharp)
Read More5 :: If I return out of a try/finally in C#, does the code in the finally-clause run?
Yes. The code in the finally always runs. If you return out of the try block, or even if you do a goto out of the try, the finally block always runs:
using System;
<pre>
class main
{
public static void Main()
{
try
{
Console.WriteLine("In Try block");
return;
}
finally
{
Console.WriteLine("In Finally block");
}
}
}
</pre>
Both In Try block and In Finally block will be displayed. Whether the return is in the try block or after the try-finally block, performance is not affected either way. The compiler treats it as if the return were outside the try block anyway. If it’s a return without an expression (as it is above), the IL emitted is identical whether the return is inside or outside of the try. If the return has an expression, there’s an extra store/load of the value of the expression (since it has to be computed within the try block).
Read Moreusing System;
<pre>
class main
{
public static void Main()
{
try
{
Console.WriteLine("In Try block");
return;
}
finally
{
Console.WriteLine("In Finally block");
}
}
}
</pre>
Both In Try block and In Finally block will be displayed. Whether the return is in the try block or after the try-finally block, performance is not affected either way. The compiler treats it as if the return were outside the try block anyway. If it’s a return without an expression (as it is above), the IL emitted is identical whether the return is inside or outside of the try. If the return has an expression, there’s an extra store/load of the value of the expression (since it has to be computed within the try block).
6 :: I was trying to use an out int parameter in one of my functions. How should I declare the variable that I am passing to it?
You should declare the variable as an int, but when you pass it in you must specify it as ‘out’, like the following: int i; foo(out i); where foo is declared as follows:
[return-type] foo(out int o) { }
Read More[return-type] foo(out int o) { }
7 :: How does one compare strings in C#?
In the past, you had to call .ToString() on the strings when using the == or != operators to compare the strings’ values. That will still work, but the C# compiler now automatically compares the values instead of the references when the == or != operators are used on string types. If you actually do want to compare references, it can be done as follows: if ((object) str1 == (object) str2) { } Here’s an example showing how string compares work:
using System;
<pre>
public class StringTest
{
public static void Main(string[] args)
{
Object nullObj = null; Object realObj = new StringTest();
int i = 10;
Console.WriteLine("Null Object is [" + nullObj + "] "
+ "Real Object is [" + realObj + "] "
+ "i is [" + i + "] ");
// Show string equality operators
string str1 = "foo";
string str2 = "bar";
string str3 = "bar";
Console.WriteLine("{0} == {1} ? {2}", str1, str2, str1 == str2 );
Console.WriteLine("{0} == {1} ? {2}", str2, str3, str2 == str3 );
}
}
</pre>
Output:
Null Object is []
Real Object is [StringTest]
i is [10]
foo == bar ? False
bar == bar ? True
Read Moreusing System;
<pre>
public class StringTest
{
public static void Main(string[] args)
{
Object nullObj = null; Object realObj = new StringTest();
int i = 10;
Console.WriteLine("Null Object is [" + nullObj + "] "
+ "Real Object is [" + realObj + "] "
+ "i is [" + i + "] ");
// Show string equality operators
string str1 = "foo";
string str2 = "bar";
string str3 = "bar";
Console.WriteLine("{0} == {1} ? {2}", str1, str2, str1 == str2 );
Console.WriteLine("{0} == {1} ? {2}", str2, str3, str2 == str3 );
}
}
</pre>
Output:
Null Object is []
Real Object is [StringTest]
i is [10]
foo == bar ? False
bar == bar ? True
8 :: How do you specify a custom attribute for the entire assembly (rather than for a class)?
Global attributes must appear after any top-level using clauses and before the first type or namespace declarations. An example of this is as follows:
using System;
[assembly : MyAttributeClass] class X {}
Note that in an IDE-created project, by convention, these attributes are placed in AssemblyInfo.cs.
Read Moreusing System;
[assembly : MyAttributeClass] class X {}
Note that in an IDE-created project, by convention, these attributes are placed in AssemblyInfo.cs.
9 :: How do you mark a method obsolete?
[Obsolete] public int Foo() {...}
or
[Obsolete("This is a message describing why this method is obsolete")] public int Foo() {...}
Note: The O in Obsolete is always capitalized.
Read Moreor
[Obsolete("This is a message describing why this method is obsolete")] public int Foo() {...}
Note: The O in Obsolete is always capitalized.
10 :: How do you implement thread synchronization (Object.Wait, Notify,and CriticalSection) in C#?
You want the lock statement, which is the same as Monitor Enter/Exit:
lock(obj) { // code }
translates to
try {
CriticalSection.Enter(obj);
// code
}
finally
{
CriticalSection.Exit(obj);
}
Read Morelock(obj) { // code }
translates to
try {
CriticalSection.Enter(obj);
// code
}
finally
{
CriticalSection.Exit(obj);
}
11 :: How do you directly call a native function exported from a DLL?
Here’s a quick example of the DllImport attribute in action:
using System.Runtime.InteropServices;
class C
{
[DllImport("user32.dll")]
public static extern int MessageBoxA
(int h, string m, string c, int type);
public static int Main()
{
return MessageBoxA(0, "Hello World!", "Caption", 0);
}
}
This example shows the minimum requirements for declaring a C# method that is implemented in a native DLL. The method C.MessageBoxA() is declared with the static and external modifiers, and has the DllImport attribute, which tells the compiler that the implementation comes from the user32.dll, using the default name of MessageBoxA. For more information, look at the Platform Invoke tutorial in the documentation.
Read Moreusing System.Runtime.InteropServices;
class C
{
[DllImport("user32.dll")]
public static extern int MessageBoxA
(int h, string m, string c, int type);
public static int Main()
{
return MessageBoxA(0, "Hello World!", "Caption", 0);
}
}
This example shows the minimum requirements for declaring a C# method that is implemented in a native DLL. The method C.MessageBoxA() is declared with the static and external modifiers, and has the DllImport attribute, which tells the compiler that the implementation comes from the user32.dll, using the default name of MessageBoxA. For more information, look at the Platform Invoke tutorial in the documentation.
12 :: How do I simulate optional parameters to COM calls?
You must use the Missing class and pass Missing.Value (in System.Reflection) for any values that have optional parameters.
Read More13 :: The C# keyword .int. maps to which .NET type?
1. System.Int16
2. System.Int32
3. System.Int64
4. System.Int128
Read More2. System.Int32
3. System.Int64
4. System.Int128
14 :: Which of these string definitions will prevent escaping on backslashes in C#?
1. string s = #.n Test string.;
2. string s = ..n Test string.;
3. string s = @.n Test string.;
4. string s = .n Test string.;
Read More2. string s = ..n Test string.;
3. string s = @.n Test string.;
4. string s = .n Test string.;
15 :: Which of these statements correctly declares a two-dimensional array in C#?
1. int[,] myArray;
2. int[][] myArray;
3. int[2] myArray;
4. System.Array[2] myArray;
Read More2. int[][] myArray;
3. int[2] myArray;
4. System.Array[2] myArray;
16 :: If a method is marked as protected internal who can access it?
1. Classes that are both in the same assembly and derived from the declaring class.
2. Only methods that are in the same class as the method in question.
3. Internal methods can be only be called using reflection.
4. Classes within the same assembly, and classes derived from the declaring class.
Read More2. Only methods that are in the same class as the method in question.
3. Internal methods can be only be called using reflection.
4. Classes within the same assembly, and classes derived from the declaring class.
17 :: What is boxing in C#?
1. Encapsulating an object in a value type.
2. Encapsulating a copy of an object in a value type.
3. Encapsulating a value type in an object.
4. Encapsulating a copy of a value type in an object.
Read More2. Encapsulating a copy of an object in a value type.
3. Encapsulating a value type in an object.
4. Encapsulating a copy of a value type in an object.
18 :: What compiler switch creates an xml file from the xml comments in the files in an assembly?
1. /text
2. /doc
3. /xml
4. /help
Read More2. /doc
3. /xml
4. /help
19 :: What is a satellite assembly in C#?
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.
Read More20 :: What is a delegate in C#?
C# delegate is a:
1. A strongly typed function pointer.
2. A light weight thread or process that can call a single method.
3. A reference to an object in a different process.
4. An inter-process message channel.
Read More1. A strongly typed function pointer.
2. A light weight thread or process that can call a single method.
3. A reference to an object in a different process.
4. An inter-process message channel.
21 :: How does assembly versioning in .NET prevent DLL Hell?
1. The runtime checks to see that only one version of an assembly is on the machine at any one time.
2. .NET allows assemblies to specify the name AND the version of any assemblies they need to run.
3. The compiler offers compile time checking for backward compatibility.
4. It doesn't.
Read More2. .NET allows assemblies to specify the name AND the version of any assemblies they need to run.
3. The compiler offers compile time checking for backward compatibility.
4. It doesn't.
22 :: Which .Gang of Four. design pattern is shown below?
<pre> public class A {
private A instance;
private A() {
}
public
static A Instance {
get
{
if ( A == null )
A = new A();
return instance;
}
}
}
</pre>
1. Factory
2. Abstract Factory
3. Singleton
4. Builder
Read Moreprivate A instance;
private A() {
}
public
static A Instance {
get
{
if ( A == null )
A = new A();
return instance;
}
}
}
</pre>
1. Factory
2. Abstract Factory
3. Singleton
4. Builder
23 :: In the NUnit test framework, which attribute must adorn a test class in order for it to be picked up by the NUnit GUI?
1. TestAttribute
2. TestClassAttribute
3. TestFixtureAttribute
4. NUnitTestClassAttribute
Read More2. TestClassAttribute
3. TestFixtureAttribute
4. NUnitTestClassAttribute
24 :: Which of the following operations can you NOT perform on an ADO.NET DataSet?
1. A DataSet can be synchronised with the database.
2. A DataSet can be synchronised with a RecordSet.
3. A DataSet can be converted to XML.
4. You can infer the schema from a DataSet.
Read More2. A DataSet can be synchronised with a RecordSet.
3. A DataSet can be converted to XML.
4. You can infer the schema from a DataSet.
25 :: In Object Oriented Programming, how would you describe encapsulation in C#?
1. The conversion of one type of object to another in C#.
2. The runtime resolution of method calls in C#.
3. The exposition of data in C#.
4. The separation of interface and implementation in C#.
Read More2. The runtime resolution of method calls in C#.
3. The exposition of data in C#.
4. The separation of interface and implementation in C#.