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.
Is it possible to inline assembly or IL in C# code?
- No.
Is it possible to have different access modifiers on the get/set
methods of a property?
- 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#? allowed in C#.
- No. Static indexers are not
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;
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?
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#?
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)?
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.
Page Numbers :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16