如何在不使用“新建”的情况下在VB.NET中创建对象

问题描述 投票:0回答:2

有人告诉我要跳出框框,然后想出一种无需使用new关键字即可在VB中创建对象的方法。有人告诉我这是可能的,但我很难弄清楚。我知道原始数据存储在堆栈上,对对象的引用也存储在堆栈上,但是对象的实际存储空间在堆中,而new则为我们做这件事。当我尝试不使用新的代码时,我大多会得到null引用异常,对此有何想法?

Dim objTest as TestOne()

'some class named TestOne with empty Constructor
vb.net oop object
2个回答
1
投票

我已经有一段时间没有做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; }
}

注意'Activator'是.NET reflection的一部分。


0
投票

如果我正确理解了您要问的内容,则在执行此操作时,它将返回具有两个属性(NamePrice)的匿名类型的实例的集合。

Dim productQuery = From product In products
                   Select product.Name, product.Price   

For Each prod In productQuery
    Console.WriteLine(prod.Name & ": " & prod.Price)  
Next

© www.soinside.com 2019 - 2024. All rights reserved.