如何在VB.Net中强制指定匿名类型的属性类型?
如何在VB.NET中强制指定匿名类型的属性类型
当然可以!在VB.NET里,你完全能直接在定义匿名类型时显式指定属性的类型——这是官方支持的语法,刚好就是你给出的示例那种写法。
有时候VB的类型推断可能不会给出你想要的结果(比如Nothing默认会被推断为Object类型),这时候显式指定类型就非常有用。比如你想要某个属性是可空的Decimal类型,而不是默认推断的Object,就可以像这样写:
Dim anonType = New With { .Property1 = 10, ' 这里会被自动推断为Integer类型 .Property2 As Decimal? = Nothing ' 显式指定为可空Decimal类型 }
再举几个实用的例子,帮你更好理解:
- 把整数强制指定为
Long类型,避免溢出风险:Dim userInfo = New With { .UserId = 1001, ' 推断为Integer .AccountNumber As Long = 9876543210 ' 显式指定为Long } - 指定可空的引用类型(比如
String?),明确表示这个属性可以为Nothing:Dim product = New With { .Name = "无线耳机", .SerialNumber As String? = Nothing ' 允许序列号为空 }
需要注意的是,匿名类型的属性本身仍然是只读的,显式指定类型并不会改变这个特性——你没法在创建匿名类型实例后修改这些属性的值。
内容的提问来源于stack exchange,提问作者kexx
相关产品推荐
相关产品推荐

