|
Программирование >> C# visual basicc#
определять переменную 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. Это ключевое слово использует синтаксис, подоб-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |