VB.NET Импорт классов - PullRequest
       19

VB.NET Импорт классов

4 голосов
/ 28 октября 2008

Я видел некоторый код, в котором Class импортируется вместо пространства имен, что делает доступными все статические члены / методы этого класса. Это особенность VB? Или другие языки тоже это делают?

TestClass.vb

public class TestClass
    public shared function Somefunc() as Boolean
        return true
    end function
end class

MainClass.vb

imports TestClass

public class MainClass
    public sub Main()
        Somefunc()
    end sub
end class

Эти файлы находятся в каталоге App_Code. Просто любопытно, потому что я никогда раньше не думал об этом, и нигде не читал об этом.

Ответы [ 5 ]

4 голосов
/ 29 октября 2008

Одной из причин использования этой функции является эмуляция опции GlobalMultiUse для Visual Basic 6.0 для создания экземпляров. Visual Basic 6.0 не имеет возможности делать модули общедоступными через границы DLL. Вместо этого вы устанавливаете свойство экземпляра на GlobalMultiUse. Он используется в основном для служебных классов, таких как класс, который экспортирует ряд математических функций.

Каждый раз, когда вы вызываете подпрограмму или функцию в классе с GlobalMultiUse Instancing, Visual Basic 6.0 создает закулисный класс перед вызовом функции.

Может использоваться для создания глобальных функций / переменных со всеми преимуществами и недостатками.

3 голосов
/ 28 октября 2008

Да, это языковая функция Visual Basic . Хотя вы можете создавать псевдонимы, используя C #, используя оператор , не похоже, что вы можете импортировать общий класс в область видимости. Если честно, я когда-либо использовал его только один раз в старом проекте, который уже использовал его. Я вижу некоторую ценность, но я боюсь, что это может принести больше вреда, чем пользы, для удобства сопровождения вашего кода в будущем.

2 голосов
/ 30 октября 2008

Я использую его всякий раз, когда использую одну и ту же библиотеку. Хорошим примером является System.Math.

C # не поддерживает это, что я считаю очень раздражающим.

1 голос
/ 28 октября 2008

На самом деле, эта функция доступна, потому что это функция shared . Если бы вы удалили модификатор shared, вам все равно пришлось бы создать экземпляр класса для доступа к нему.

Чтобы получить доступ ко всем переменным и всем функциям в классе по умолчанию, вы должны унаследовать его.

Насколько мне известно импорт класс в основном связывает прямую ссылку на него, а не создает какой-либо его экземпляр для использования.

РЕДАКТИРОВАТЬ для ясности: ссылки - это ссылки, специфичные для VB, что объясняет функциональность этого, относящегося к VB.NET

0 голосов
/ 18 апреля 2011

подожди, подожди, подожди ....

Я обнаружил только сегодня утром, что мы можем получить все объекты (классы) внутри любого класса которым нужны их ссылки с использованием этого метода / функции;

Protected Overrides Sub Finalize()
    MyBase.Finalize()
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...