Создать объект в Visual Basic (не VB.NET) без использования «New» - PullRequest
0 голосов
/ 27 октября 2019

Мне сказали, что нужно мыслить нестандартно и придумать способ создать объект в VB без использования ключевого слова new. Мне сказали, что это возможно, но я не могу понять это. Я знаю, что примитивные данные хранятся в стеке, и там также хранятся ссылки на объекты, но фактическое пространство памяти для объекта находится в куче, и это новое делает это для нас. Когда я пробую это без нового, я главным образом получаю исключение нулевой ссылки, какие-либо идеи о том, как это возможно?

Dim objTest as TestOne()

'some class named TestOne with empty Constructor

Ответы [ 2 ]

2 голосов
/ 27 октября 2019

В VB вы можете использовать функцию CreateObject , если у вас есть определенный класс, определенный в созданной вами COM-библиотеке или уже существующей COM-библиотеке.

КакНапример, создайте ссылку на проект библиотеки COM времени выполнения сценариев Microsoft (scrrun.dll). Чтобы сделать это в VB IDE, выберите Project , References , затем выберите ссылку " Microsoft Scripting Runtime * ". Затем вы можете написать следующий код:

Dim fso As Object
fso = CreateObject("Scripting.FileSystemObject")
1 голос
/ 27 октября 2019

Я давно не занимался VB, но Activator существует как в C #, так и в VB. Вот пара строк C #, которые вы можете преобразовать в VB:

var newThing = (TestOne)Activator.CreateInstance(typeof(TestOne));
newThing.ID = 5;

Метод CreateInstance возвращает объект, который я преобразовываю в правильный класс с

(TestOne)

который является синтаксисом C # для преобразования типов. Извините, я забыл, как это сделать в VB.

Где класс «TestOne» выглядит следующим образом:

class TestOne {
    public int ID { get; set; }
}

Обратите внимание, что «Активатор» является частью .NET отражением .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...