Программирование >>  C# visual basicc# 

1 2 3 [ 4 ] 5 6 7 ... 10


определять переменную value со средством доступа set. В C++/CLI для средства доступа get также требуется указание типа возврата и типа параметра для set.

C++/CLI имеет сокращенную версию записи свойства. Используя ключевое слово property, вы просто должны определить тип и имя свойства; средства доступа set и get создаются компилятором автоматически. Если ничего не требуется кроме установки и возврата значения переменной, то сокращенная версия подходит достаточно неплохо. Если же необходима более изощренная реализация средств доступа, например, нужно проверить значение или выполнить обновление, вы должны написать полный синтаксис для свойств. Проектировщики C# 3.0 позаимствовали из C++/CLI также и сокращенную нотацию.

C#

public class Person

private string firstname; public string Firstname

get { return firstname; } set { firstname = value; }

C++/CLI

public ref class Person

private:

String firstname; public:

property String Firstname

String get()

return firstname;

void set(String value)

firstname = value;

property String Lastname;

Visual Basic

Public Class Person

Private myFirstname As String

Public Property Firstname()

Return myFirstname End Get

Set(ByVal value)

myFirstname = value End Set

End Property

Private myLastname As String Public Property Lastname() Get

Return myLastname

End Get

Set(ByVal value)

myLastname = value End Set

End Property

End Class



В C# и C++/CLI свойства, доступные только для чтения, имеют лишь средство доступа get. В Visual Basic вы должны также специфицировать модификатор Readonly. Свойства, доступные только для записи, должны быть определены с модификатором WriteOnly и средством set.

Visual Basic

Public Readonly Property Name()

Return myFirstname & & myLastname

End Get End Property

Инициализаторы объектов

В C# 3.0 и Visual Basic свойства могут инициализироваться посредством инициализатора объекта. Свойства можно инициализировать, используя фигурные скобки - подобно инициализатору массива. Синтаксис C# и Visual Basic очень похож; только Visual Basic использует ключевое слово With.

C#

Person p = new Person() { FirstName = Tom , LastName = Turbo }; Visual Basic

Dim p As New Person With { .FirstName = Tom , .LastName = Turbo }

Расширяющие методы

Расширяющие методы - фундамент LINQ. Как в C#, так и в Visual Basic можно создавать расширяющие методы. Однако синтаксис отличается. C# помечает расширяющие методы ключевым словом this у первого параметра. Visual Basic помечает расширяющий метод атрибутом <Extension>.

C#

public static class StringExtension

public static void Foo(this string s) {

Console.WriteLine( Foo {0} , s);

Visual Basic

Public Module StringExtension <Extension()>

Public Sub Foo(ByVal s As String) Console.WriteLine( Foo {0} , s) End Sub End Module

Статические члены

Статическое поле создается только один раз для всех объектов данного типа. В C# и C++/CLI для этого предусмотрено ключевое слово static; в Visual Basic та же функциональность представлена ключевым словом Shared.

Применение статических членов выполняется с использованием имени класса, за которым следует операция точки и имя статического члена. В C++/CLI для доступа к статическим членам используется операция ::.



C#

public class Singleton

private static SomeData data = null; public static SomeData GetData()

if (data == null)

data = new SomeData();

return data;

использование:

SomeData d = Singleton.GetData();

C++/CLI

public ref class Singleton

private:

static SomeData hData; public:

static SomeData GetData()

if (hData == nullptr)

hData = gcnew SomeData();

return hData;

использование:

SomeData d = Singleton::GetData();

Visual Basic

Public Class Singleton

Private Shared data As SomeData

Public Shared Function GetData() As SomeData

If data is Nothing Then data = new SomeData()

End If

Return data End Function

End Class

использование:

Dim d as SomeData = Singleton.GetData()

Массивы

Массивы обсуждались в главе 5. Класс Array всегда стоит за кулисами в массивах .NET; объявление массива заставляет компилятор создать класс, унаследованный от базового класса Array. Когда проектировался язык C#, он унаследовал скобочный синтаксис для массивов из C++ и расширил их инициализаторами массивов.

C#

int[] arr1 = new int[3] {1, 2, 3}; int[] arr2 = {1, 2, 3};

Если вы используете фигурные скобки в C++/CLI, то создаете родной массив C++, а не массив, основанный на классе Array. Чтобы создавать массивы .NET, в C++/ CLI введено ключевое слово array. Это ключевое слово использует синтаксис, подоб-



1 2 3 [ 4 ] 5 6 7 ... 10

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика