Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции все вместе / Lektsii_vvedenie_Vyrazhenia.doc
Скачиваний:
3
Добавлен:
20.04.2015
Размер:
178.18 Кб
Скачать

Выражения создания объектов

Выражение_создания_объекта используется для создания нового экземпляра типа_класса или типа_значения.

выражение_создания_объекта: new тип ( список_аргументовнеобязательно ) инициализатор_объекта_или_коллекциинеобязательно new тип инициализатор_объекта_или_коллекции

инициализатор_объекта_или_коллекции: инициализатор_объекта инициализатор_коллекции

Тип выражения_создания_объекта должен быть равен типу_класса, типу_значения или параметру_типа. Тип не может быть типом_класса abstract.

Во время выполнения обработка выражения_создания_объекта в виде new T(A), где T является типом_класса или типом_структуры, а A является необязательным списком_аргументов, включает следующие этапы.

  • Если T является типом_класса:

  • Создается новый экземпляр класса T.

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

  • В соответствии с правилами вызова функции-члена вызывается конструктор экземпляра. Ссылка на созданный экземпляр автоматически передается конструктору экземпляра, и к этому экземпляру можно обращаться из этого конструктора с помощью this.

  • Если T является типом_структуры:

  • С помощью выделения временной локальной переменной создается экземпляр типа T. Поскольку для явного присвоения значений каждому полю создаваемого экземпляра требуется конструктор экземпляра типа_структуры, инициализация временной переменной не требуется.

  • В соответствии с правилами вызова функции-члена вызывается конструктор экземпляра. Ссылка на созданный экземпляр автоматически передается конструктору экземпляра, и к этому экземпляру можно обращаться из этого конструктора с помощью this.

Оператор typeof

Оператор typeof используется для получения объекта System.Type для типа.

Пример

System.Type type = typeof(int);

Пример

using System;

namespace ConsoleApplication7

{

class Employee

{

private string name;

private string alias;

private decimal salary = 3000.00m;

// Constructor:

public Employee(string name, string alias)

{

// Use this to qualify the fields, name and alias:

this.name = name;

this.alias = alias;

}

// Printing method:

public void printEmployee()

{

Console.WriteLine("Name: {0}\nAlias: {1}", name, alias);

// Passing the object to the CalcTax method by using this:

Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this));

}

public decimal Salary

{

get { return salary; }

}

}

class Tax

{

public static decimal CalcTax(Employee E)

{

return 0.08m * E.Salary;

}

}

class Program

{

static void Main(string[] args)

{

Employee E1 = new Employee("Mingda Pan", "mpan");

// Display results:

E1.printEmployee();

Type t = typeof(Employee);

// Alternatively, you could use

// SampleClass obj = new SampleClass();

// Type t = obj.GetType();

Console.WriteLine("Methods:");

System.Reflection.MethodInfo[] methodInfo = t.GetMethods();

foreach (System.Reflection.MethodInfo mInfo in methodInfo)

Console.WriteLine(mInfo.ToString());

Console.WriteLine("Members:");

System.Reflection.MemberInfo[] memberInfo = t.GetMembers();

foreach (System.Reflection.MemberInfo mInfo in memberInfo)

Console.WriteLine(mInfo.ToString());

}

}

}

10

Соседние файлы в папке лекции все вместе