Balaji C# Top 100 Questions
Balaji C# Top 100 Questions
https://abinfotechnologies.blogspot.com
[email protected]
1. What is C#?
C# is the best language for writing Microsoft .NET applications. C# provides the rapid application
development found in Visual Basic with the power of C++. Its syntax is similar to C++ syntax and
meets 100% of the requirements of OOPs like the following:
Abstraction
Encapsulation
Polymorphism
Inheritance
Introduction to C#
The latest version of C# is C# 6.0 with lots of new features, to know them read the following article:
2. What is an Object?
According to MSDN, "a class or struct definition is like a blueprint that specifies what the type can
do. An object is basically a block of memory that has been allocated and configured according to the
blueprint. A program may create many objects of the same class. Objects are also called instances,
and they can be stored in either a named variable or in an array or collection. Client code is the code
that uses these variables to call the methods and access the public properties of the object. In an
object-oriented language such as C#, a typical program consists of multiple objects interacting
dynamically".
Objects helps us to access the member of a class or struct either they can be fields, methods or
properties, by using the dot. To know more about object read the following links:
“The code, which is developed in .NET framework is known as managed code. This code is directly
executed by CLR with the help of managed code execution. Any language that is written in .NET
Framework is managed code”.
Unmanaged Code
The code, which is developed outside .NET framework is known as unmanaged code.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
“Applications that do not run under the control of the CLR are said to be unmanaged, and certain
languages such as C++ can be used to write such applications, which, for example, access low -
level functions of the operating system. Background compatibility with the code of VB, ASP and
COM are examples of unmanaged code”.
Unmanaged code can be unmanaged source code and unmanaged compile code. Unmanaged
code is executed with the help of wrapper classes.
Boxing:
Boxing is the process of converting a value type data type to the object or to any interface data type
which is implemented by this value type. When the CLR boxes a value means when CLR is
converting a value type to Object Type, it wraps the value inside a System.Object and stores it on
the heap area in application domain.
Example:
Unboxing:
Unboxing is also a process which is used to extract the value type from the object or any
implemented interface type. Boxing may be done implicitly, but unboxing have to be explicit by
code.
Example:
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
The concept of boxing and unboxing underlines the C# unified view of the type system in which a
value of any type can be treated as an object.
Class and struct both are the user defined data type but have some major difference:
Struct
Class
The class is reference type in C# and it inherits from the System.Object Type.
Classes are usually used for large amounts of data.
Classes can be inherited to other class.
A class can be abstract type.
We can’t use an object of a class with using new keyword.
We can create a default constructor.
Theoretically their are some differences between Abstract Class and Interface which are listed
below:
A class can implement any number of interfaces but a subclass can at most use only one
abstract class.
An abstract class can have non-abstract methods (concrete methods) while in case of
interface all the methods has to be abstract.
An abstract class can declare or use any variables while an interface is not allowed to do so.
In an abstract class all data member or functions are private by default while in interface all
are public, we can’t change them manually.
In an abstract class we need to use abstract keyword to declare abstract methods while in an
interface we don’t need to use that.
An abstract class can’t be used for multiple inheritance while interface can be used as
multiple inheritance.
An abstract class use constructor while in an interface we don’t have any type of constructor.
To know more about the difference between Abstract Class and Interface go to the following link:
An enum is a value type with a set of related named constants often referred to as an enumerator
list. The enum keyword is used to declare an enumeration. It is a primitive data type, which is user
defined.
An enum type can be an integer (float, int, byte, double etc.). But if you used beside int it has to be
cast.
An enum is used to create numeric constants in .NET framework. All the members of enum are of
enum type. Their must be a numeric value for each enum type.
The default underlying type of the enumeration element is int. By default, the first enumerator has
the value 0, and the value of each successive enumerator is increased by 1.
Enums in C#
Enumeration In C#
Using break statement, you can 'jump out of a loop' whereas by using continue statement, you can
'jump over one iteration' and then resume your loop execution.
1. using System;
2. using System.Collections;
3. using System.Linq;
4. using System.Text;
5.
6. namespace break_example
7. {
8. Class brk_stmt {
9. public static void main(String[] args) {
10. for (int i = 0; i <= 5; i++) {
11. if (i == 4) {
12. break;
13. }
14. Console.WriteLine("The number is " + i);
15. Console.ReadLine();
16.
17. }
18. }
19. }
20.
21. }
Output
The number is 0;
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
The number is 1;
The number is 2;
The number is 3;
Eg.Continue Statement
1. using System;
2. using System.Collections;
3. using System.Linq;
4. using System.Text;
5.
6. namespace continue_example
7. {
8. Class cntnu_stmt
9. {
10. public static void main(String[]
11. {
12. for (int i = 0; i <= 5; i++)
13. {
14. if (i == 4)
15. {
16. continue;
17. }
18. Console.WriteLine(“The number is "+ i);
19. Console.ReadLine();
20.
21. }
22. }
23. }
24.
25. }
26.
27.
Output
The number is 1;
The number is 2;
The number is 3;
The number is 5;
Constant (const) and Readonly (readonly) both looks like same as per the uses but they have
some differences:
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Constant is known as “const” keyword in C# which is also known immutable values which are
known at compile time and do not change their values at run time like in any function or constructor
for the life of application till the application is running.
Readonly is known as “readonly” keyword in C# which is also known immutable values and are
known at compile and run time and do not change their values at run time like in any function for the
life of application till the application is running. You can assay their value by constructor when we
call constructor with “new” keyword.
We have a Test Class in which we have two variables one is readonly and another is constant.
1. class Test {
2. readonly int read = 10;
3. const int cons = 10;
4. public Test() {
5. read = 100;
6. cons = 100;
7. }
8. public void Check() {
9. Console.WriteLine("Read only : {0}", read);
10. Console.WriteLine("const : {0}", cons);
11. }
12. }
Here I was trying to change the value of both the variables in constructor but when I am trying to
change the constant it gives an error to change their value in that block which have to call at run
time.
So finally remove that line of code from class and call this Check() function like the following code
snippet:
1. class Program {
2. static void Main(string[] args) {
3. Test obj = new Test();
4. obj.Check();
5. Console.ReadLine();
6. }
7. }
8. class Test {
9. readonly int read = 10;
10. const int cons = 10;
11. public Test() {
12. read = 100;
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
13. }
14. public void Check() {
15. Console.WriteLine("Read only : {0}", read);
16. Console.WriteLine("const : {0}", cons);
17. }
18. }
Output:
In C Sharp (C#) we can have three types of parameters in a function. The parameters can be in
parameter (which is not returned back to the caller of the function), out parameter and ref parameter.
We have lots of differences in both of them.
We can't use this in static method because keyword 'this' returns a reference to the current instance
of the class containing it. Static methods (or any static member) do not belong to a particular
instance. They exist without creating an instance of the class and call with the name of a class not
by instance so we can’t use this keyword in the body of static Methods, but in case of Extension
Methods we can use it the functions parameters. Let’s have a look on “this” keyword.
The "this" keyword is a special type of reference variable that is implicitly defined within each
constructor and non-static method as a first parameter of the type class in which it is defined. For
example, consider the following class written in C#.
"this" Keyword in C#
this keyword in C#
Properties are members that provide a flexible mechanism to read, write or compute the values of
private fields, in other words by the property we can access private fields. In other words we can say
that a property is a return type function/method with one parameter or without a parameter. These
are always public data members. It uses methods to access and assign values to private fields
called accessors.
The get and set portions or blocks of a property are called accessors. These are useful to restrict the
accessibility of a property, the set accessor specifies that we can assign a value to a private field in a
property and without the set accessor property it is like a read-only field. By the get accessor we can
access the value of the private field, in other words it returns a single value. A Get accessor
specifies that we can access the value of a field publically.
Read/Write.
ReadOnly.
WriteOnly
Property in C#
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Properties In C#
Extension methods enable you to add methods to existing types without creating a new derived type,
recompiling, or otherwise modifying the original type. An extension method is a special kind of static
method, but they are called as if they were instance methods on the extended type.
An extension method is a static method of a static class, where the "this" modifier is applied to the
first parameter. The type of the first parameter will be the type that is extended.
Extension methods are only in scope when you explicitly import the namespace into your source
code with a using directive.
Now we need to extend the definition of this class so m going to create a static class to create an
extinction method like:
Here I just create a method that name is NewMethod with a parameter using this to define which
type of data I need to be extend, now let’s see how to use this function.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
1. class Program {
2. static void Main(string[] args) {
3. Class1 ob = new Class1();
4. ob.Display();
5. ob.Print();
6. ob.NewMethod();
7. Console.ReadKey();
8. }
9. }
Extension Methods in C#
Extension Method In C#
Extension Methods in C#
Finalize:
Finalize used to free unmanaged resources those are not in use like files, database
connections in application domain and more, held by an object before that object is
destroyed.
In the Internal process it is called by Garbage Collector and can’t called manual by user code
or any service.
Finalize belongs to System.Object class.
Implement it when you have unmanaged resources in your code, and make sure that these
resources are freed when the Garbage collection happens.
Dispose:
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Dispose is also used to free unmanaged resources those are not in use like files, database
connections in Application domain at any time.
Dispose explicitly it is called by manual user code.
If we need to dispose method so must implement that class by IDisposable interface.
It belongs to IDisposable interface.
Implement this when you are writing a custom class that will be used by other users.
StringBuilder and string both use to store string value but both have many differences on the bases
of instance creation and also for performance:
String:
String is an immutable object. Immutable like when we create string object in code so we cannot
modify or change that object in any operations like insert new value, replace or append any value
with existing value in string object, when we have to do some operations to change string simply it
will dispose the old value of string object and it will create new instance in memory for hold the new
value in string object like:
Note:
Performance wise string is slow because its’ create a new instance to override or change the
previous value.
StringBuilder:
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
System.Text.Stringbuilder is mutable object which also hold the string value, mutable means once
we create a System.Text.Stringbuilder object we can use this object for any operation like insert
value in existing string with insert functions also replace or append without creating new instance of
System.Text.Stringbuilder for every time so it’s use the previous object so it’s work fast as compare
than System.String. Let’s have an example to understand System.Text.Stringbuilder like:
00000Note:
C# delegates are same as pointers to functions, in C or C++. A delegate Object is a reference type
variable that use to holds the reference to a method. The reference can be changed at runtime
which is hold by an object of delegate, a delegate object can hold many functions reference which is
also known as Invocation List that refers functions in a sequence FIFO, we can new functions ref in
this list at run time by += operator and can remove by -= operator.
Delegates are especially used for implementing events and the call-back methods. All delegates are
implicitly derived from the System.Delegate class.
C# Delegates
Delegates in C#
Sealed classes are used to restrict the inheritance feature of object oriented programming. Once a
class is defined as a sealed class, the class cannot be inherited.
In C#, the sealed modifier is used to define a class as sealed. In Visual Basic .NET the Not
Inheritable keyword serves the purpose of sealed. If a class is derived from a sealed class then the
compiler throws an error.
If you have ever noticed, structs are sealed. You cannot derive a class from a struct.
1. // Sealed class
2. sealed class SealedClass
3. {
4.
5. }
A partial class is only use to splits the definition of a class in two or more classes in a same source
code file or more than one source files. You can create a class definition in multiple files but it will be
compiled as one class at run time and also when you’ll create an instance of this class so you can
access all the methods from all source file with a same object.
Partial Classes can be create in the same namespace it’s doesn’t allowed to create a partial class in
different namespace. So use “partial” keyword with all the class name which you want to bind
together with the same name of class in same namespace, let’s have an example:
Boxing:
Boxing is the process of converting a value type data type to the object or to any interface data type
which is implemented by this value type. When the CLR boxes a value means when CLR converting
a value type to Object Type, it wraps the value inside a System.Object and stores it on the heap
area in application domain.
Example:
Unboxing:
Unboxing is also a process which is use to extracts the value type from the object or any
implemented interface type. Boxing may be done implicit but unboxing have to be explicit by code.
Example:
The concept of boxing and unboxing underlies the C# unified view of the type system in which a
value of any type can be treated as an object.
IEnumerable is the parent interface for all non-generic collections in System.Collections namespace
like ArrayList, HastTable etc. that can be enumerated. For the generic version of this interface as
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
IEnumerable<T> which a parent interface of all generic collections class in
System.Collections.Generic namespace like List<> and more.
Early Binding and Late Binding concepts belongs to polymorphism so let’s see first about
polymorphism:
Polymorphism is an ability to take more than one form of a function means with a same name we
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
can write multiple functions code in a same class or any derived class.
In Compile time polymorphism or Early Binding we will use multiple methods with same name but
different type of parameter or may be the number or parameter because of this we can perform
different-different tasks with same method name in the same class which is also known as Method
overloading.
Run time polymorphism also known as late binding, in Run Time polymorphism or Late Binding we
can do use same method names with same signatures means same type or same number of
parameters but not in same class because compiler doesn’t allowed that at compile time so we can
use in derived class that bind at run time when a child class or derived class object will instantiated
that’s way we says that Late Binding. For that we have to create my parent class functions as partial
and in driver or child class as override functions with override keyword.
Understanding Polymorphism in C#
Polymorphism in .NET
IEnumerable:
Is the parent interface for all non-generic collections in System.Collections namespace like ArrayList,
HastTable etc. that can be enumerated. For the generic version of this interface as IEnumerable<T>
which a parent interface of all generic collections class in System.Collections.Generic namespace
like List<> and more.
IQueryable:
As per MSDN IQueryable interface is intended for implementation by query providers. It is only
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
supposed to be implemented by providers that also implement IQueryable<T>. If the provider does
not also implement IQueryable<T>, the standard query operators cannot be used on the provider's
data source.
The IQueryable interface inherits the IEnumerable interface so that if it represents a query, the
results of that query can be enumerated. Enumeration causes the expression tree associated with
an IQueryable object to be executed. The definition of "executing an expression tree" is specific to a
query provider. For example, it may involve translating the expression tree to an appropriate query
language for the underlying data source. Queries that do not return enumerable results are executed
when the Execute method is called.
IEnumerable vs IQuerable
IEnumerable Vs IQueryable
If we implement multipole interface in the same class with conflict method name so we don’t need to
define all or in other words we can say if we have conflict methods in same class so we can’t
implement their body independently in the same class coz of same name and same signature so we
have to use interface name before method name to remove this method confiscation let’s see an
example:
1. interface testInterface1 {
2. void Show();
3. }
4. interface testInterface2 {
5. void Show();
6. }
7. class Abc: testInterface1,
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
8. testInterface2 {
9.
10. void testInterface1.Show() {
11. Console.WriteLine("For testInterface1 !!");
12. }
13. void testInterface2.Show() {
14. Console.WriteLine("For testInterface2 !!");
15. }
16. }
1. class Program {
2. static void Main(string[] args) {
3. testInterface1 obj1 = new Abc();
4. testInterface1 obj2 = new Abc();
5. obj1.Show();
6. obj2.Show();
7.
8. Console.ReadLine();
9. }
10. }
Output:
Arrays are powerful data structures for solving many programming problems. You saw during the
creation of variables of many types that they have one thing in common, they hold information about
a single item, for instance an integer, float and string type and so on. So what is the solution if you
need to manipulate sets of items? One solution would be to create a variable for each item in the set
but again this leads to a different problem. How many variables do you need?
So in this situation Arrays provide mechanisms that solves problem posed by these questions. An
array is a collection of related items, either value or reference type. In C# arrays are immutable such
that the number of dimensions and size of the array are fixed.
Arrays Overview
An array contains zero or more items called elements. An array is an unordered sequence of
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
elements. All the elements in an array are of the same type (unlike fields in a class that can be of
different types). The elements of an array accessed using an integer index that always starts from
zero. C# supports single-dimensional (vectors), multidimensional and jagged arrays.
Elements are identified by indexes relative to the beginning of the arrays. An index is also commonly
called indices or subscripts and are placed inside the indexing operator ([]). Access to array
elements is by their index value that ranges from 0 to (length-1).
Array Properties
Overview of Arrays in C#
Doing Arrays - C#
Constructor Chaining In C#
Constructors In C#
Clone:
Method creates a shallow copy of an array. A shallow copy of an Array copies only the elements of
the Array, whether they are reference types or value types, but it does not copy the objects that the
references refer to. The references in the new Array point to the same objects that the references in
the original Array point to.
CopyTo:
The Copy static method of the Array class copies a section of an array to another array. The CopyTo
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
method copies all the elements of an array to another one-dimension array. The code listed in
Listing 9 copies contents of an integer array to an array of object types.
we can use multiple Catches block with every try but when any Exceptions is throw by debugger so
every catches match this exception type with their signature and catch the exception by any single
catch block so that means we can use multiple catches blocks but only one can executed at once
like:
1. using System;
2. class MyClient {
3. public static void Main() {
4. int x = 0;
5. int div = 0;
6. try {
7. div = 100 / x;
8. Console.WriteLine("Not executed line");
9. } catch (DivideByZeroException de) {
10. Console.WriteLine("DivideByZeroException");
11. } catch (Exception ee) {
12. Console.WriteLine("Exception");
13. } finally {
14. Console.WriteLine("Finally Block");
15. }
16. Console.WriteLine("Result is {0}", div);
17. }
18. }
Exception Handling in C#
1. Ensures a class has only one instance and provides a global point of access to it.
2. A singleton is a class that only allows a single instance of itself to be created, and usually
gives simple access to that instance.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
3. Most commonly, singletons don't allow any parameters to be specified when creating the
instance, since a second request of an instance with a different parameter could be
problematic! (If the same instance should be accessed for all requests with the same
parameter then the factory pattern is more appropriate.)
4. There are various ways to implement the Singleton Pattern in C#. The following are the
common characteristics of a Singleton Pattern.
1. namespace Singleton {
2. class Program {
3. static void Main(string[] args) {
4. Calculate.Instance.ValueOne = 10.5;
5. Calculate.Instance.ValueTwo = 5.5;
6. Console.WriteLine("Addition : " + Calculate.Instance.Addition());
7. Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction
());
8. Console.WriteLine("Multiplication : " + Calculate.Instance.Multipli
cation());
9. Console.WriteLine("Division : " + Calculate.Instance.Division());
10.
11. Console.WriteLine("\n----------------------\n");
12.
13. Calculate.Instance.ValueTwo = 10.5;
14. Console.WriteLine("Addition : " + Calculate.Instance.Addition());
15. Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction
());
16. Console.WriteLine("Multiplication : " + Calculate.Instance.Multipli
cation());
17. Console.WriteLine("Division : " + Calculate.Instance.Division());
18.
19. Console.ReadLine();
20. }
21. }
22.
23. public sealed class Calculate {
24. private Calculate() {}
25. private static Calculate instance = null;
26. public static Calculate Instance {
27. get {
28. if (instance == null) {
29. instance = new Calculate();
30. }
31. return instance;
32. }
33. }
34.
35. public double ValueOne {
36. get;
37. set;
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
38. }
39. public double ValueTwo {
40. get;
41. set;
42. }
43.
44. public double Addition() {
45. return ValueOne + ValueTwo;
46. }
47.
48. public double Subtraction() {
49. return ValueOne - ValueTwo;
50. }
51.
52. public double Multiplication() {
53. return ValueOne * ValueTwo;
54. }
55.
56. public double Division() {
57. return ValueOne / ValueTwo;
58. }
59. }
60. }
The basic difference is that the Throw exception overwrites the stack trace and this makes it hard to
find the original code line number that has thrown the exception.
Throw basically retains the stack information and adds to the stack information in the exception that
it is thrown.
Let us see what it means rather speaking so many words to better understand the differences. I am
using a console application to easily test and see how the usage of the two differ in their
functionality.
1. using System;
2. using System.Collections.Generic;
3. using System.Linq;
4. using System.Text;
5.
6. namespace TestingThrowExceptions {
7. class Program {
8. public void ExceptionMethod() {
9. throw new Exception("Original Exception occurred in ExceptionMethod
");
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
10.
11. }
12.
13. static void Main(string[] args) {
14. Program p = new Program();
15. try {
16. p.ExceptionMethod();
17. } catch (Exception ex) {
18.
19. throw ex;
20. }
21. }
22. }
23. }
Now run the code by pressing the F5 key of the keyboard and see what happens. It returns an
exception and look at the stack trace:
Indexer allows classes to be used in more intuitive manner. C# introduces a new concept known as
Indexers which are used for treating an object as an array. The indexers are usually known as smart
arrays in C#. They are not essential part of object-oriented programming.
An indexer, also called an indexed property, is a class property that allows you to access a member
variable of a class using the features of an array.
Defining an indexer allows you to create classes that act like virtual arrays. Instances of that class
can be accessed using the [] array access operator.
Creating an Indexer
<modifier>
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
can be private, public, protected or internal.
<return type>
Indexers in C#
INDEXER in C#
Delegate can invoke only one method reference has been encapsulated into the delegate.it is
possible for certain delegate to hold and invoke multiple methods such delegate called multicast
delegates.multicast delegates also know as combinable delegates, must satisfy the following
conditions:
The return type of the delegate must be void. None of the parameters of the delegate type
can be delegate type can be declared as output parameters using out keywords.
Multicast delegate instance that created by combining two delegates, the invocation list is
formed by concatenating the invocation list of two operand of the addition operation.
Delegates are invoked in the order they are added.
1. using System;
2. using System.Collections.Generic;
3. using System.Linq;
4. using System.Text;
5. delegate void MDelegate();
6. class DM {
7. static public void Display() {
8. Console.WriteLine("Meerut");
9. }
10. static public void print() {
11. Console.WriteLine("Roorkee");
12. }
13. }
14. class MTest {
15. public static void Main() {
16. MDelegate m1 = new MDelegate(DM.Display);
17. MDelegate m2 = new MDelegate(DM.print);
18. MDelegate m3 = m1 + m2;
19. MDelegate m4 = m2 + m1;
20. MDelegate m5 = m3 - m2;
21. m3();
22. m4();
23. m5();
24. }
25. }
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Use following link to with more details:
Both the == Operator and the Equals() method are used to compare two value type data items or
reference type data items. The Equality Operator (==) is the comparison operator and the Equals()
method compares the contents of a string. The == Operator compares the reference identity while
the Equals() method compares only contents. Let’s see with some examples.
In this example we assigned a string variable to another variable. A string is a reference type and in
the following example, a string variable is assigned to another string variable so they are referring to
the same identity in the heap and both have the same content so you get True output for both the ==
Operator and the Equals() method.
1. using System;
2. namespace ComparisionExample {
3. class Program {
4. static void Main(string[] args) {
5. string name = "sandeep";
6. string myName = name;
7. Console.WriteLine("== operator result is {0}", name == myName);
8. Console.WriteLine("Equals method result is {0}", name.Equals(myName
));
9. Console.ReadKey();
10. }
11. }
12. }
"is" operator
In the C# language, we use the "is" operator to check the object type. If the two objects are of the
same type, it returns true and false if not.
In the preceding, we are just checking the matching type. Yes, our speaker is an object of Speaker
type.
"as" operator:
The "as" operator behaves similar to the "is" operator. The only difference is it returns the object if
both are compatible to that type else it returns null.
We have a method that accepts dynamic objects and returns the object name property if the object
is of the Author type.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Here, we declared two objects:
1. authorName = GetAuthorName(speaker);
2. Console.WriteLine("Author name is:{0}", authorName);
A nullable Type is a data type is that contain the defined data type or the value of null.
You should note here that here variable datatype has been given and then only it can be used.
Declaration:
Any DataType can be declared nullable type with the help of operator "?".
Example of the syntax is as Follows :-
1. int? i = null;
As discussed in previous section "var" is not compatible with this Nullable Type.
1. var? i = null;
1. var i = 4;
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
For more details about Nullable<> follow the link:
Method overloading is a way to achieve compile time Polymorphism where we can use a method
with the same name but different signature, Method overloading is done at compile time and we
have multiple way to do that but in all way method name should be same.
Example:
1. using System;
2. using System.Collections.Generic;
3. using System.Linq;
4. using System.Text;
5.
6. namespace Hello_Word {
7. class overloding {
8. public static void Main() {
9. Console.WriteLine(volume(10));
10. Console.WriteLine(volume(2.5F, 8));
11. Console.WriteLine(volume(100L, 75, 15));
12. Console.ReadLine();
13. }
14.
15. static int volume(int x) {
16. return (x * x * x);
17. }
18.
19. static double volume(float r, int h) {
20. return (3.14 * r * r * h);
21. }
22.
23. static long volume(long l, int b, int h) {
24. return (l * b * h);
25. }
26. }
27. }
Note:
If we have a method that have two parameter object type and have a same name method with two
integer parameter so when we call that method with int value so it’ll call that method have integer
parameter instead of object type parameters method.
Object Pooling is something that tries to keep a pool of objects in memory to be re-used later and
hence it will reduce the load of object creation to a great extent. This article will try to explain this in
detail. The example is for an Employee object, but you can make it general by using Object base
class.
Object Pool is nothing but a container of objects that are ready for use. Whenever there is a request
for a new object, the pool manager will take the request and it will be served by allocating an object
from the pool.
How it works?
We are going to use Factory pattern for this purpose. We will have a factory method, which will take
care about the creation of objects. Whenever there is a request for a new object, the factory method
will look into the object pool (we use Queue object). If there is any object available within the allowed
limit, it will return the object (value object), otherwise a new object will be created and give you back.
Generics allow you to delay the specification of the data type of programming elements in a class or
a method, until it is actually used in the program. In other words, generics allow you to write a class
or method that can work with any data type.
You write the specifications for the class or the method, with substitute parameters for data types.
When the compiler encounters a constructor for the class or a function call for the method, it
generates code to handle the specific data type.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Generic classes and methods combine reusability, type safety and efficiency in a way that their non-
generic counterparts cannot. Generics are most frequently used with collections and the methods
that operate on them. Version 2.0 of the .NET Framework class library provides a new namespace,
System.Collections.Generic, that contains several new generic-based collection classes. It is
recommended that all applications that target the .NET Framework 2.0 and later use the new generic
collection classes instead of the older non-generic counterparts such as ArrayList.
Features of Generics
Introduction to Generics in C#
Generics in C#
Access modifiers are keywords used to specify the declared accessibility of a member or a type.
Access modifiers are an integral part of object-oriented programming. They support the concept of
encapsulation, which promotes the idea of hiding functionality. Access modifiers allow you to define
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
who does or doesn't have access to certain features.
A virtual method is a method that can be redefined in derived classes. A virtual method has an
implementation in a base class as well as derived the class. It is used when a method's basic
functionality is the same but sometimes more functionality is needed in the derived class. A virtual
method is created in the base class that can be overridden in the derived class. We create a virtual
method in the base class using the virtual keyword and that method is overridden in the derived
class using the override keyword.
When a method is declared as a virtual method in a base class then that method can be defined in a
base class and it is optional for the derived class to override that method. The overriding method
also provides more than one form for a method. Hence it is also an example for polymorphism.
When a method is declared as a virtual method in a base class and that method has the same
definition in a derived class then there is no need to override it in the derived class. But when a
virtual method has a different definition in the base class and the derived class then there is a need
to override it in the derived class.
When a virtual method is invoked, the run-time type of the object is checked for an overriding
member. The overriding member in the most derived class is called, which might be the original
member, if no derived class has overridden the member.
Virtual Method
Virtual Method in C#
In C# data types can be of two types: Value Types and Reference Types. Value type variables
contain their object (or data) directly. If we copy one value type variable to another then we are
actually making a copy of the object for the second variable. Both of them will independently operate
on their values, Value Type member will located into Stack and reference member will located in
Heap always.
Here I used a structure as a value type. It has an integer member. I created two instances of
this structure. After wards I assigned second instance to the first one. Then I changed the
state of second instance, but it hasn't effect the first one, as whole items are value type and
assignments on those types will copy only values not references i.e. in a Value Type
assignment, all instances have its own local copy of members.
I created a class and added a "DataTable" as a Reference Type member for this class. Then
I performed the assignments just like below. But the difference is that on changing the state
of second instance, the state of first instance will automatically alter. So in a Reference Type
assignment both Value and Reference will be assigned i.e. all instances will point to the
single object.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
3. Value Type With Reference Type
This case and the last case to come are more interesting. I used a structure in this particular
scenario also. But this time it includes a Reference Type(A Custom Class Object) Member
besides a Value Type (An Integer) Member. When you performing the assignments, it seems
like a swallow copy, as Value Type member of first instance won't effected, but the
Reference Type member will alter according to the second instance. So in this particular
scenario, assignment of Reference Type member produced a reference to a single object
and assignment of Value Type member produced a local copy of that member.
Contrary to the above case, in this scenario, both Reference & Value Types will be effected.
I.e. a Value Type member in a Reference Type will be shared among its instances.
Serialization means saving the state of your object to secondary memory, such as a file.
Suppose you have a business layer where you have many classes to perform your business data.
Now suppose you want to test whether your business classes give the correct data out without
verifying the result from the UI or from a database. Because it will take some time to process.
Here comes Serialization. You will serialize all your necessary business classes and save them into
a text or XML file.
on your hard disk. So you can easily test your desired result by comparing your serialized saved
data with.
your desired output data. You can say it is a little bit of autonomic unit testing performed by the
developer.
The .Net Framework provides resource management for managed objects through the garbage
collector - You do not have to explicitly allocate and release memory for managed objects. Clean-up
operations for any unmanaged resources should performed in the destructor in C#. To allow the
programmer to explicitly perform these clean-up activities, objects can provide a Dispose method
that can be invoked when the object is no longer needed. The using statement in C# defines a
boundary for the object outside of which, the object is automatically destroyed. The using statement
is excited when the end of the "using" statement block or the execution exits the "using" statement
block indirectly, for example - an exception is thrown. The "using" statement allows you to specify
multiple resources in a single statement. The object could also be created outside the "using"
statement. The objects specified within the using block must implement the IDisposable interface.
The framework invokes the Dispose method of objects specified within the "using" statement when
the block is exited.
A jagged array is an array whose elements are arrays. The elements of a jagged array can be of
different dimensions and sizes. A jagged array is sometimes called an "array of arrays."
A special type of array is introduced in C#. A Jagged Array is an array of an array in which the length
of each array index can differ.
Example:
In the above declaration the rows are fixed in size. But columns are not specified as they can vary.
The real usage of a thread is not about a single sequential thread, but rather using multiple threads
in a single program. Multiple threads running at the same time and performing various tasks is
referred as Multithreading. A thread is considered to be a lightweight process because it runs within
the context of a program and takes advantage of resources allocated for that program.
A single-threaded process contains only one thread while a multithreaded process contains more
than one thread for execution.
System.Threading Namespace
Like many other features, in .NET, System.Threading is the namespace that provides various types
to help in construction of multithreaded applications.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Anonymous types allow us to create new type without defining them. This is way to defining read
only properties into a single object without having to define type explicitly. Here Type is generating
by the compiler and it is accessible only for the current block of code. The type of properties is also
inferred by the compiler.
We can create anonymous types by using “new” keyword together with the object initializer.
Example
Anonymous types are also used with the "Select" clause of LINQ query expression to return subset
of properties.
Example
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
If Any object collection having properties called FirstName , LastName, DOB etc. and you want only
FirstName and LastName after the Querying the data then.
1. class MyData {
2. public string FirstName {
3. get;
4. set;
5. }
6. public string LastName {
7. get;
8. set;
9. }
10. public DateTime DOB {
11. get;
12. set;
13. }
14. public string MiddleName {
15. get;
16. set;
17. }
18. }
19. static void Main(string[] args) {
20. // Create Dummy Data to fill Collection.
21. List < MyData > data = new List < MyData > ();
22. data.Add(new MyData {
23. FirstName = "Jignesh", LastName = "Trivedi", MiddleName = "G", DOB = ne
w DateTime(1990, 12, 30)
24. });
25. data.Add(new MyData {
26. FirstName = "Tejas", LastName = "Trivedi", MiddleName = "G", DOB = new
DateTime(1995, 11, 6)
27. });
28. data.Add(new MyData {
29. FirstName = "Rakesh", LastName = "Trivedi", MiddleName = "G", DOB = new
DateTime(1993, 10, 8)
30. });
31. data.Add(new MyData {
32. FirstName = "Amit", LastName = "Vyas", MiddleName = "P", DOB = newDateT
ime(1983, 6, 15)
33. });
34. data.Add(new MyData {
35. FirstName = "Yash", LastName = "Pandiya", MiddleName = "K", DOB = newDa
teTime(1988, 7, 20)
36. });
37. }
38. var anonymousData = from pl in data
39. select new {
40. pl.FirstName, pl.LastName
41. };
42. foreach(var m in anonymousData) {
43. Console.WriteLine("Name : " + m.FirstName + " " + m.LastName);
44. }
45. }
A Hashtable is a collection that stores (Keys, Values) pairs. Here, the Keys are used to find the
storage location and is immutable and cannot have duplicate entries in the Hashtable. The .Net
Framework has provided a Hash Table class that contains all the functionality required to implement
a hash table without any additional development. The hash table is a general-purpose dictionary
collection. Each item within the collection is a DictionaryEntry object with two properties: a key object
and a value object. These are known as Key/Value. When items are added to a hash table, a hash
code is generated automatically. This code is hidden from the developer. All access to the table's
values is achieved using the key object for identification. As the items in the collection are sorted
according to the hidden hash code, the items should be considered to be randomly ordered.
The Base Class libraries offers a Hashtable Class that is defined in the System.Collections
namespace, so you don't have to code your own hash tables. It processes each key of the hash that
you add every time and then uses the hash code to look up the element very quickly. The capacity of
a hash table is the number of elements the hash table can hold. As elements are added to a hash
table, the capacity is automatically increased as required through reallocation. It is an older .Net
Framework type.
Declaring a Hashtable
The Hashtable class is generally found in the namespace called System.Collections. So to execute
any of the examples, we have to add using System.Collections; to the source code. The declaration
for the Hashtable is:
LINQ stands for Language Integrated Query. LINQ is a data querying methodology which provides
querying capabilities to .NET languages with a syntax similar to a SQL query
LINQ has a great power of querying on any source of data. The data source could be collections of
objects, database or XML files. We can easily retrieve data from any object that implements the
IEnumerable<T> interface.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Advantages of LINQ
1. LINQ offers an object-based, language-integrated way to query over data no matter where
that data came from. So through LINQ we can query database, XML as well as collections.
3. It allows you to query collections like arrays, enumerable classes etc in the native language
of your application, like VB or C# in much the same way as you would query a database
using SQL.
The System.IO namespace provides four classes that allow you to manipulate individual files, as
well as interact with a machine directory structure. The Directory and File directly extends
System.Object and supports the creation, copying, moving and deletion of files using various static
methods. They only contain static methods and are never instantiated. The FileInfo and DirecotryInfo
types are derived from the abstract class FileSystemInfo type and they are typically, employed for
obtaining the full details of a file or directory because their members tend to return strongly typed
objects. They implement roughly the same public methods as a Directory and a File but they are
stateful and the members of these classes are not static.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Reflection typically is the process of runtime type discovery to inspect metadata, CIL code, late
binding and self-generating code. At run time by using reflection, we can access the same "type"
information as displayed by the ildasm utility at design time. The reflection is analogous to reverse
engineering in which we can break an existing *.exe or *.dll assembly to explore defined significant
contents information, including methods, fields, events and properties.
You can dynamically discover the set of interfaces supported by a given type using the
System.Reflection namespace. This namespace contains numerous related types as follows:
Reflection typically is used to dump out the loaded assemblies list, their reference to inspect
methods, properties etcetera. Reflection is also used in the external disassembling tools such
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Reflector, Fxcop and NUnit because .NET tools don't need to parse the source code similar to C++.
Metadata Investigation
The following program depicts the process of reflection by creating a console based application. This
program will display the details of the fields, methods, properties and interfaces for any type within
the mscorlib.dll assembly. Before proceeeding, it is mandatory to import "System.Reflection".
Here, we are defining a number of static methods in the program class to enumerate fields, methods
and interfaces in the specified type. The static method takes a single "System.Type" parameter and
returns void.
Class is Pass by reference (reference type) Struct is Pass by Copy (Value type)
Good for larger complex objects Good for Small isolated models
Can use waste collector for memory Cannot use Garbage collector and hence no Memory
management management
Q #8) What is the difference between Virtual method and Abstract method?
Ans: A Virtual method must always have a default implementation. However, it can be
overridden in the derived class, though not mandatory. It can be overridden
using override keyword.
An Abstract method does not have an implementation. It resides in the abstract class. It is
mandatory that the derived class implements the abstract method. An override keyword is
not necessary here though it can be used.
Q #9) Explain Namespaces in C#.
Ans: They are used to organize large code projects. “System” is the most widely used
namespace in C#. We can create our own namespace and use one namespace in another,
which are called Nested Namespaces.
They are denoted by the keyword “namespace”.
//----------------code to read-------------------//
//-------------code to write-------------------//
{
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Console.writeline(“….”);
For Example:
abstract class AB1
All the methods in an abstract class are implicitly virtual methods. Hence virtual keyword
should not be used with any methods in abstract class.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Q #18) What are Boxing and Unboxing?
Ans: Converting a value type to reference type is called Boxing.
For Example:
int Value1 -= 10;
//————Boxing——————//
Explicit conversion of same reference type (created by boxing) back to value type is
called Unboxing.
For Example:
//————UnBoxing——————//
A Single dimensional array is a linear array where the variables are stored in a single row.
Above example is a Single dimensional array.
Arrays can have more than one dimension. Multidimensional arrays are also called
rectangular arrays.
foreach(string s in languages)
if(System.Text.RegularExpressions.Regex.IsMatch(s,"Python"))
{
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Console.WriteLine("Match found");
The above example searches for “Python” against the set of inputs from the languages
array. It uses Regex.IsMatch which returns true in case if the pattern is found in the input.
The pattern can be any regular expression representing the input that we want to match.
return Sum;
{
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
myDel DelgateExample = AddNumbers;
In the above example, we have a delegate myDel which takes an integer value as a
parameter. Class Program has a method of the same signature as the delegate, called
AddNumbers().
If there is another method called Start() which creates an object of the delegate, then the
object can be assigned to AddNumbers as it has the same signature as that of the delegate.
deathDate();
void GetDeathDetails()
void Main()
myPat.deathDate += GetDeathDetails;
void GetPatInfo ()
void Main()
Func – A Func delegate defines a method that can be called on arguments and
returns a result.
Func <int, string, bool> myDel is same as delegate bool myDel(int a, string b);
Predicate – Defines a method that can be called on arguments and always returns
the bool.
Predicate<string> myDel is same as delegate bool myDel(string s);
Q #34) What do Multicast Delegates mean?
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Ans: A Delegate that points to more than one method is called a Multicast Delegate.
Multicasting is achieved by using + and += operator.
Consider the Example from question 32.
There are two subscribers for deathEvent, GetPatInfo, and GetDeathDetails. And hence we
have used += operator. It means whenever the myDel is called, both the subscribers get
called. The delegates will be called in the order in which they are added.
Q #35) Explain Publishers and Subscribers in Events.
Ans: A Publisher is a class responsible for publishing a message of different types of other
classes. The message is nothing but Event as discussed in the above questions.
From the Example in Question 32, Class Patient is the Publisher class. It is generating an
Event deathEvent, which the other classes receive.
Subscribers capture the message of the type that it is interested in. Again, from
the Example of Question 32, Class Insurance and Bank are Subscribers. They are interested
in event deathEvent of type void.
Q #36) What are Synchronous and Asynchronous operations?
Ans: Synchronization is a way to create a thread-safe code where only one thread can
access the resource at any given time.
Asynchronous call waits for the method to complete before continuing with the program
flow. Synchronous programming badly affects the UI operations, when the user tries to
perform time-consuming operations since only one thread will be used.
In Asynchronous operation, the method call will immediately return so that the program can
perform other operations while the called method completes its work in certain situations.
In C#, Async and Await keywords are used to achieve asynchronous programming. Look
at Question 43 for more details on synchronous programming.
Q #37) What is Reflection in C#?
Ans: Reflection is the ability of a code to access the metadata of the assembly during
runtime. A program reflects upon itself and uses the metadata to inform the user or modify
its behavior. Metadata refers to information about objects, methods.
The namespace System.Reflection contains methods and classes that manage the
information of all the loaded types and methods. It is mainly used for windows applications,
for Example, to view the properties of a button in a windows form.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
The MemberInfo object of the class reflection is used to discover the attributes associated
with a class.
Reflection is implemented in two steps, first, we get the type of the object, and then we use
the type to identify members such as methods and properties.
Once we have a type of class, the other information of the class can be easily accessed.
So, from the above code, we see 2 compare methods initially, to compare string and int.
In case of other data type parameter comparisons, instead of creating many overloaded
methods, we can create a generic class and pass a substitute data type, i.e T. So, T acts as a
datatype until it is used specifically in the Main() method.
childThread.Start();
C# can execute more than one task at a time. This is done by handling different processes
by different threads. This is called MultiThreading.
There are several thread methods that are used to handle the multi-threaded
operations:
Start, Sleep, Abort, Suspend, Resume and Join.
try
Finally {Monitor.Exit(ObjA));}
System.Threading.ThreadPool.QueueUserWorkItem(new
System.Threading.WaitCallback(SomeTask));
The above line queues a task. SomeTask methods should have a parameter of type Object.
The reverse process of getting the c# code back from the binary form is
called Deserialization.
To Serialize an object we need the object to be serialized, a stream which can contain the
serialized object and namespace System.Runtime.Serialization can contain classes for
serialization.
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.
Single line
Eg:
Eg:
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
/*This is a multiple line comment
We are in line 2
We are in line 2
Eg:
/// summary;
/// summary
/// summary;
/// summary
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. Static member are by default not globally accessible it depends upon the type of
access modified used. The compiler stores the address of the method as the entry point and
uses this information to begin execution before any objects are created. And Void is a type
modifier that states that the method or variable 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.
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.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
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.
The using block is used to obtain a resource and use it and then automatically dispose of
when the execution of block completed.
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 implement ISerialize Interface. De-
serialization is the reverse process of creating an object from a stream of bytes.
We can’t use ‘This’ in a static method because we can only use static variables/methods in a
static method.
Constant variables are declared and initialized at compile time. The value can’t be changed
afterwards. Read only is used only when we want to assign the value at run time.
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.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
14. What are value types and reference types?
Value types are stored in the Stack whereas reference types stored on heap.
Value types:
Reference Types:
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.
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.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
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.
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.
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.
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.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
23. How can we sort the elements of the array in descending order?
To catch an exception, we use try catch blocks. Catch block can have parameter of
system.Exception type.
Eg:
try
GetAllData();
catch(Exception ex)
try
GetAllData();
}
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
catch(Exception ex)
In the above example, we can omit the parameter from catch statement.
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.
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.
Circular reference is situation in which two or more resources are interdependent on each
other causes the lock condition and make the resources unusable.
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.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
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.
Sometimes there are some errors that need to be handeled as per user requirements.
Custom exceptions are used for them and are used defined exceptions.
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.
Colon is used as inheritance operator in C#. Just place a colon and then the class name.
34. What is the base class in .net from which all the classes are derived from?
System.Object
System.Object
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.
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.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
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.
Value types can take either their normal values or a null value. Such types are called
nullable types.
If(someID.HasVAlue)
If(someID.HasVAlue)
“is” operator is used to check the compatibility of an object with a given type and it returns
the result as Boolean.
A delegate having multiple handlers assigned to it is called multicast delegate. Each handler
is assigned to a method.
Indexers are known as smart arrays in C#. It allows the instances of a class to be indexed in
the same way as array.
Eg:
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.
In singleton pattern, a class can only have one instance and provides access point to it
globally.
Eg:
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.
ABInfoTech
https://abinfotechnologies.blogspot.com
[email protected]
Ctype is used for conversion where the conversion is defined between the expression and
the type.