vb.net - 有没有办法在 .NET 中重载属性

标签 vb.net properties overloading

我已经做了很多方法重载,但现在我有一个实例,我想重载一个属性。 Visual Studio 中的 IDE 似乎允许这样做,因为我实际上可以设置两个重载,但是我收到一个错误消息,说它无效,因为它们只是类型不同。我想我的语法中遗漏了什么?

我希望能够使用两个(或更多)不同的自定义类作为我的属性的类型。

Public Overloads Property myFlexibleProperty() As myCustomClass1
      Get
         Return _myFlexibleProperty1
      End Get
      Set(ByVal value As myCustomClass1)
         _myFlexibleProperty1 = value
      End Set
   End Property

   Public Overloads Property myFlexibleProperty() As myCustomClass2
      Get
         Return _myFlexibleProperty2
      End Get
      Set(ByVal value As myCustomClass2)
         _myFlexibleProperty2 = value
      End Set
   End Property

到目前为止,我找到的所有帮助都与重载方法有关。尽管 IDE 允许我这样做,但我开始认为这是不可能的?

最佳答案

要重载某些东西——方法或属性——你需要它接受一组不同的参数。由于 VB.NET 中的属性可以接受参数,我猜您可以重载它们;但它们必须不同。

所以你可以这样做:

Public Overloads Readonly Property Average() As Double
Public Overloads Readonly Property Average(ByVal startIndex As Integer) As Double

但不是这个:
Public Overloads Readonly Property Average() As Double
Public Overloads Readonly Property Average() As Decimal

关于vb.net - 有没有办法在 .NET 中重载属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238048/

相关文章:

c# - 多个自定义控件都使用相同的属性;接口(interface)是获取属性的最优雅的方式吗?

java - 如何使用 Spring PropertyPlaceholderConfigurer 从另一个属性文件调用属性文件?

c++ - 具有二维数组的类中的否定运算符重载

vb.net - Oracle 日期字段 - 时间问题

mysql - 数据读取过程中遇到 fatal error

vb.net - 将单精度数转换为 double

c++ - 为什么我们在重载赋值运算符时必须清空当前 vector ? C++

vb.net - LINQ to Entities 无法识别方法 [Type] GetValue [Type]

c# - 线程安全的 List<T> 属性

Python 重载不存在的运算符有效,为什么?