Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Microsoft C# Professional Projects - Premier Press.pdf
Скачиваний:
177
Добавлен:
24.05.2014
Размер:
14.65 Mб
Скачать

COMPONENTS OF C#

Chapter 3

51

 

 

 

The Finalize() method does not return any value. In addition, you cannot pass parameters to the Finalize() method and directly override it.

Before C# calls the Finalize() method, it waits for some time after the object instance is no longer used by any program code.This unnecessarily blocks memory and destroys resources in longer time duration. To tackle this problem, C# provides you with the Dispose() and Close() methods.

Dispose() and Close() Methods

In C#, you can explicitly call the Dispose() and Close() methods to destroy the resources immediately after the class instance is deleted. These methods are not implicitly invoked. Therefore, if you forget to call the Dispose() or Close() methods, the resources remain in memory until the garbage collection system cleans the memory. To solve this problem, you can use the Dispose() and Close() methods with the Finalize() method. If the Dispose() or Close() method is not explicitly called, the Finalize() method will clean the memory before the garbage collection system is invoked.

Having learned about the Finalize(), Dispose(), and Close() methods, you can take a look at the methods used with classes in detail.

Methods

A method is a logical section of code that can be used to perform a specific operation. An object or a class can call a method to implement the functionality of the method. A method has a return type or can be of the type void.

Declaring a Method

The syntax of method declaration is as shown here:

< modifier> <return type> <method name> (parameter1, parameter2, ........)

{

statements

}

Here, modifier is the access modifier and return type specifies the data type of the value that is returned by the method. The list of parameters that the method takes is specified in the parentheses following the method name.

52

Part II

HANDLING DATA

 

 

 

Calling a Method

After a method is declared, you can call the method to be used by any class or an object. To call a method, you use the following syntax:

object1.method1 (parameter1, parameter2,...);

Here, object1 is the instance of the class that calls the method, method1 is the name of the method, and the parameter list is specified within parentheses.

Passing Parameters to Methods

While calling a method, you can pass a list of parameters to the method. The types of parameters that can be passed to a method are:

Value parameters

Reference parameters

Output parameter

Parameter arrays

The parameters that are passed by value to a method are called value parameters. When a variable is passed by value, the method changes the value of the variable in a copy. However, the actual value remains unchanged. Therefore, the value parameters are not affected by the changes that are made to the variables in the method. By default, all variables are passed as value parameters.

The value of variables that are passed by reference, known as reference parameters, changes when you modify the variable in a method. When a variable is passed by reference, the variable passes only a reference to the method and not the actual value. Therefore, changes made by the method are made to the original variable and not to its copy. C# overwrites the changes to the original value of the variable. The ref keyword is used to pass a variable to a method by reference.

The syntax of a method to which you pass a parameter by reference is:

object1.method1 (parameter1, ref parameter2,...);

Here, parameter1 is passed by value. However, parameter2 is passed by reference. Therefore, the value of parameter1 will not be affected by the changes made to it during method execution. However, if changes are made to parameter2 in the method body, the changes will get reflected to its original value.

COMPONENTS OF C#

Chapter 3

53

 

 

 

TIP

In contrast to variables, strings do not change even when passed by reference. When you make a change to the value of a string, C# creates a new string.

In general, methods return a single value. In C#, you can write methods that return multiple values. To do so, you pass a parameter to the method as an output parameter. An output parameter is passed to a method by using the out keyword.

object1.method1 (out parameter1);

Here, parameter1 is passed to method1 as an output parameter.

In C#, it is essential that you initialize a variable before using it.Therefore, when you pass an output parameter, it already has some value. C# overwrites this value with the value returned by the method. This is a waste and can be avoided by using the out keyword. A variable prefixed with the out keyword is an exception, as you can pass it to a method without initializing it.The output parameter is initialized by the value returned by the method. A variable can store an output value only if you pass the variable to the method by reference.

In addition to variables, you can pass arrays as a parameter to a method. However, only a one-dimensional array can be passed to a method. You use the params keyword to specify a parameter array.

The syntax of passing a parameter array is:

object1.method1 (parameter1, params data type[] parameter2);

In the previous syntax, parameter2 is a one-dimensional array, and its type is specified by the data type.

When you declare a parameter array along with other parameters, you must include the parameter array as the last element in the list. In addition, you cannot include a parameter array with a reference or an output parameter. Therefore, the following code will generate an error:

object1.method1 (params data type[] parameter1, ref parameter2);

54

Part II

HANDLING DATA

 

 

 

Method Modifiers

Similar to classes, methods in C# also have modifiers. Following are some of the commonly used method modifiers.

static. A static method cannot be called by any particular instance of a class. To call a static method, you need to specify the name of the container class.

new. A new method in C# is used to suppress the compiler’s warning when you try to hide a method of a base class with the same name as the derived class method.

public. Similar to the public modifier of a class, if you declare a method as public, it can be accessed from any location.The method can also be called from outside the class that declares it.

private. A method declared as private is private to the class that declares it. This implies that a private method cannot be called from outside the class that contains the method.

protected. A protected method modifier is similar to a protected class modifier. A method declared as protected can be called from the derived classes of the class that contains the method, in addition to the class that declares the method.

internal. An internal method can be called from anywhere in the assembly.

extern. An extern method in C# has an unlimited scope. You can use a method declared as extern even in a different language.

virtual. A derived class of a class that contains a method can override a virtual method. You can also implement a virtual method dynamically. However, the method that will get invoked will be decided at run time.

A virtual modifier cannot be used with static, override, and abstract modifiers.

abstract. An abstract method is a special type of a virtual method. An abstract method can define a method. However, you cannot implement an abstract method. You can only declare an abstract method in an

abstract class.

override. The override method is used to override an inherited abstract or virtual method.