gpt4 book ai didi

vb.net - 如何使用扩展在非实例类型上重载共享方法?

转载 作者:行者123 更新时间:2023-12-01 15:05:12 25 4
gpt4 key购买 nike

我所说的非实例类型是指不公开公共(public)构造函数的类型,因为没有更好的术语。

我想扩展 BitConverter具有 ToString() 重载的类,它采用 Char 类型的参数,表示值分隔符。

为什么?默认情况下,ToString() 调用返回字节数组的字符串表示形式,由破折号分隔。签名不允许您指定不同的分隔符,我觉得这很不幸。

现在因为这不是一个实例类型,或者可能因为我重载了一个共享方法,我很难找到合适的语法来定义我的扩展方法。

我在这里做错了什么,导致过载没有出现在 IntelliSense 中:

Imports System.Runtime.CompilerServices

Module BitConverterExtensions
<Extension()>
Public Function ToString(ByVal converter As BitConverter, ByVal value() As Byte, ByVal delimiter As Char) As String
Return BitConverterExtensions.ToString(converter, value, 0, value.Length, delimiter)
End Function

<Extension()>
Public Function ToString(ByVal converter As BitConverter, ByVal value() As Byte, ByVal startIndex As Integer, ByVal delimiter As Char) As String
Return BitConverterExtensions.ToString(converter, value, startIndex, value.Length, delimiter)
End Function

<Extension()>
Public Function ToString(ByVal converter As BitConverter, ByVal value() As Byte, ByVal startIndex As Integer, ByVal length As Integer, ByVal delimiter As Char) As String
Dim bytes As String = BitConverter.ToString(value, startIndex, length)
Return bytes.Replace("-"c, delimiter)
End Function

End Module

或者根本不可能扩展共享方法?

最佳答案

不可能在 shared/static 类型上引入方法重载。扩展方法是一种功能,其使用是由类型的实例而不是类型本身驱动的。

关于vb.net - 如何使用扩展在非实例类型上重载共享方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10586440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com