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.
C Sharp Interviews are getting tough these days as the technology grows faster. To get through the C Sharp interview one needs to update him/herself in a regular manner. Having said that, just before the interview, it is very important to have a quick glance of the reputed C Sharp questions and answers to make yourself comfortable during the interview process. This is where DoAnswers.com helps you in renewing yourself on C Sharp and various other technologies interview preparation.
11. How can you sort the elements of the array in descending order?
By calling Sort() and then Reverse() methods.
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.
13. 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.
14. 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); }
15. 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.
16. 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.
17. 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; 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 + \"]\n\" + \"Real Object is [\" + realObj + \"]\n\" + \"i is [\" + i + \"]\n\"); // 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 ); } } Output: Null Object is [] Real Object is [StringTest] i is [10] foo == bar ? False bar == bar ? True
18. How is method overriding different from method overloading?
When overriding a method, you change the behavior of the method for the derived class. Overloading a method simply involves having another method with the same name within the class.
19. 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) { }
20. 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.