Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен в гаи redacted.doc
Скачиваний:
5
Добавлен:
27.09.2019
Размер:
676.35 Кб
Скачать

3. Каков результат компиляции и выполнения приведенного ниже кода?

static void Main(string[] args)

{

Console.WriteLine(GetSomeResult(10000));

}

static long GetSomeResult(long someValue)

{

long value1 = 10 * 1000 * 10000 * someValue;

long value2 = 10 * 1000 * 10000 * 100000;

return value2 / value1;

}

Ответ: из-за строчки long value2 = 10 * 1000 * 10000 * 100000 возникает ошибка компиляции (переполнение int), поскольку вычисления производятся в int арифметике до присвоения значения переменной value2. Чтобы ошибки не возникало, нужно использовать один из параметров типа long, для этого можно явно указать литеру L у одного из чисел long value2 = 10 * 1000 * 10000 * 100000L;

Экзаменационный билет №16

1.Определение классов в с#. Ключевые слова internal, public, abstract

В языке С# для определения классов применяется ключевое слово class:

class MyClass

{

// Члены класса.

}

В этом коде определяется класс по имени MyClass. После определения класса его

экземпляр можно создавать в любом месте проекта, где имеется доступ к этому

определению. По умолчанию классы объявляются внутренними, что делает их доступными только для кода, который находится внутри текущего проекта. Объявлять их таковыми можно явно с использованием ключевого слова internal, как показано ниже (хотя делать это не обязательно):

internal class MyClass {

// Члены класса.

}

В качестве альтернативного варианта можно указывать, что класс является

общедоступным и должен быть также доступен и в коде других проектов. Для этого нужно использовать ключевое слово public, как показано ниже:

public class MyClass {

// Члены класса.

}

Помимо этих двух ключевых слов, играющих роль модификаторов доступа, можно

использовать либо ключевое слово abstract и тем самым делать класс абстрактным

(т.е. не допускающим создания экземпляров, позволяющим только наследовать от него другие классы и способным иметь абстрактные члены), либо ключевое слово sealed и тем самым сделать класс герметизированным (не допускающим наследования от него никаких других классов). Э­ти два ключевых слова являются взаимно исключающими, т.е. указывать можно только какое-то одно из них. В частности, абстрактный класс объявляется следующим образом:

public abstract class MyClass {

// Члены класса, могут быть и абстрактными.

}

Допустимые комбинации модификаторов доступа для определений классов:

Отсутствует или internal Класс, к которому может быть получен доступ только из текущего проекта public Класс, к которому может быть получен доступ из любого места

abstract или internal abstract Класс, к которому может быть получен доступ только из текущего проекта, и который не допускает создания экземпляров,т.е. позволяет создавать только производные классы

public abstract Класс, к которому может быть получен доступ из любого места, и который не допускает создания экземпляров, т.е. позволяет создавать только производные классы

sealed или internal sealed Класс, к которому может быть получен доступ только из текущего проекта, и который не допускает создания производных классов, т.е. допускает создание только экземпляров

public sealed Класс, к которому может быть получен доступ из любого места, и который не допускает создания производных классов, т.е. допускает создание только экземпляров.