Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_ПОА.doc
Скачиваний:
93
Добавлен:
13.02.2015
Размер:
2.65 Mб
Скачать

Compiling the Code

Copy the class and paste it over Class1 in a console application.

Имитация параметров по умолчанию

В этом примере демонстрируется использование перегрузки метода для имитации параметров по умолчанию.

Пример

class MyClass

{

static string myMethod(string precip, string country, string location)

{

return string.Format("The {0} in {1} stays mainly in the {2}.",

precip, country, location );

}

static string myMethod(string precip, string country )

{

return myMethod(precip, country, "plain");

}

static string myMethod()

{

return myMethod("rain", "Spain", "plain");

}

static void Main(string[] args)

{

System.Console.WriteLine(myMethod());

System.Console.WriteLine(myMethod("snow", "Walla Walla"));

}

}

Компиляция кода

Скопируйте класс и вставьте его поверх Class1 в консольном приложении.40

How to: Declare a Property

This example declares an instance property.

Example

private string name;

// A read-write instance property:

public string NameProperty

{

get

{

return name;

}

set

{

name = value;

}

}

Compiling the Code

The code must appear within a class or a struct.

Robust Programming

  • You can use the get accessor to either return the field value or compute the value and return it, as follows:

get

{

return (name != null) ? name : "NA";

}

Do not use the get accessor to change the state of the object, as follows:

get

{

return myNumericField++;

}

Объявление свойства

В этом примере объявляется свойство экземпляра.

Пример

---------

Компиляция кода

Код должен появиться в классе или структуре.

Надежное программирование

  • Метод доступа get можно использовать для возвращения значения поля или для вычисления и возвращения этого значения, как показано в следующем примере.

get

{

return (name != null) ? name : "NA";

}

Для изменения состояния объекта метод доступа get использовать нельзя.41

get

{

return myNumericField++;

}

How to: Set a Property on an Object

This example sets the CurrentDirectory property on the Environment class to C:\Public.

Example

Environment.CurrentDirectory = "C:\\Public";

-or-

Environment.CurrentDirectory = @"C:\Public";

Compiling the Code

Copy the code, and paste it into the Main method of a console application.

Robust Programming

Use the fully qualified name of the property, unless it is accessible from the same scope.

Unless the property is static, it must be referenced through an instance of the class.

When assigning an expression to a property, make sure of the following:

  • That it is of a compatible data type.

  • That it has a valid value, especially if the value is derived from user input.

If you want more control over possible exceptions, enclose the property assignment in a try-catch statement.

Задание свойства объекта

В этом примере свойству CurrentDirectory в классе Environment задается значение C:\Public.

Пример

Environment.CurrentDirectory = "C:\\Public";

или

Environment.CurrentDirectory = @"C:\Public";

Компиляция кода

Скопируйте код и вставьте его в метод Main консольного приложения.

Structs

A struct in C# is similar to a class, but structs lack certain features, such as inheritance. Also, since a struct is a value type, it can typically be created faster than a class. If you have tight loops in which new data structures are being created in large numbers, you should consider using a struct instead of a class. Structs are also used to encapsulate groups of data fields such as the coordinates of a point on a grid, or the dimensions of a rectangle.

Example

This example program defines a struct to store a geographic location. It also overrides the ToString() method to produce a more useful output when displayed in the WriteLine statement. As there are no methods in the struct, there is no advantage in defining it as a class.

struct GeographicLocation

{

private double longitude;

private double latitude;

public GeographicLocation(double longitude, double latitude)

{

this.longitude = longitude;

this.latitude = latitude;

}

public override string ToString()

{

return System.String.Format("Longitude: {0} degrees, Latitude: {1} degrees", longitude, latitude);

}

}

class Program

{

static void Main()

{

GeographicLocation Seattle = new GeographicLocation(123, 47);

System.Console.WriteLine("Position: {0}", Seattle.ToString());

}

}

Output

The output from this example looks like this:

Position: Longitude: 123 degrees, Latitude: 47 degrees

Структуры

Структура в C# аналогична классу, однако в структурах отсутствуют некоторые возможности, например наследование. Кроме того, поскольку структура является типом значения, ее можно создать быстрее, чем класс. При наличии непрерывного цикла, где создается большое количество новых структур данных, вместо класса рекомендуется использовать структуру. Структуры используются для инкапсуляции групп полей данных, таких как координаты точки в сетке или размеры прямоугольника.

Пример

В следующем примере программы определяется struct для сохранения географического расположения. Здесь также переопределяется метод ToString() для вывода более необходимых результатов при отображении в операторе WriteLine. Поскольку в struct методы отсутствуют, определение структуры в качестве класса бессмысленно.42

-----

Результат

После выполнения примера выводится следующий результат.

Position: Longitude: 123 degrees, Latitude: 47 degrees

Variables and Constants

A variable represents a numeric or string value or an object of a class. The value that the variable stores may change, but the name stays the same. A variable is one type of field. The following code is a simple example of how to declare an integer variable, assign it a value, and then assign it a new value.

int x = 1; // x holds the value 1

x = 2; // now x holds the value 2

In C#, variables are declared with a specific data type and a label. If your programming background is in loosely typed languages such as JScript, you are used to using the same "var" type for all variables, but in C# you must specify whether your variable is an int, a float, a byte, a short, or any of the more than 20 different data types. The type specifies, among other things, the exact amount of memory that must be allocated to store the value when the application runs. The C# language enforces certain rules when converting a variable from one type to another.

int answer = 42;

string greeting = "Hello, World!";

double bigNumber = 1e100;

System.Console.WriteLine("{0} {1} {2}", answer, greeting, bigNumber);