ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Interview questions for C# developers(Ò»)
2014-11-24 01:37:50 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:8678´Î
Tags£ºInterview questions for developers

Useful for preparation, but too specific to be used in the interview.


Is it possible to inline assembly or IL in C# code ¨C No.
Is it possible to have different access modifiers on the get/set methods of a property ¨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.


Is it possible to have a static indexer in C# ¨C No. Static indexers are not allowed in C#.
If I return out of a try/finally in C#, does the code in the finally-clause run ¨C 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;
class main
{
public static void Main()
{
try
{
Console.WriteLine(¡°In Try block¡±);
return;
}
finally
{
Console.WriteLine(¡°In Finally block¡±);
}
}
}


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


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 ¨C 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) { }
How does one compare strings in C# ¨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


How do you specify a custom attribute for the entire assembly (rather than for a class) ¨C 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.


How do you mark a method obsolete ¨C
[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.
How do you implement thread synchronization (Object.Wait, Notify,and CriticalSection) in C# ¨C You want the lock statement, w

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£º£Ã££ÃæÊÔÌâ ÏÂһƪ£ºÐ±àC#ÃæÊÔÌâ

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿