VB.net Mid作为左运算符特殊(奇怪?)行为

VB.net Mid作为左运算符特殊(奇怪?)行为,第1张

概述今天,在与我的同事交谈时,脑子里出现了一些奇怪的东西. 处理来自vb6的字符串的“秘密”方式,如: Dim strSomeString as String strSomeString = "i am phat" Mid$(strSomeString, 6,4) = "hack" 这会让我在strSomeString中进行攻击. 虽然对vb6中支持的这种奇怪感到惊讶,但当我读到it is su 今天,在与我的同事交谈时,脑子里出现了一些奇怪的东西.

处理来自vb6的字符串的“秘密”方式,如:

Dim strSomeString as String strSomeString = "i am phat"  MID$(strSomeString,6,4) = "Hack"

这会让我在strSomeString中进行攻击.

虽然对vb6中支持的这种奇怪感到惊讶,但当我读到it is supported in VB.Net too(可能与旧代码的兼容性)时,我完全被吹了.

Dim TestString As String' Initializes string.TestString = "The dog jumps"' Returns "The fox jumps".MID(TestString,5,3) = "fox"' Returns "The cow jumps".MID(TestString,5) = "cow"' Returns "The cow jumpe".MID(TestString,5) = "cow jumped over"' Returns "The duc jumpe".MID(TestString,3) = "duck"

我的问题是:它在技术上如何运作?在那种特殊情况下,MID的表现如何? (方法?函数?扩展方法?)

解决方法 它被转换为Microsoft.VisualBasic.CompilerServices.StringType中对此函数的MSIL调用

Public Shared Sub MIDStmtStr ( _    ByRef sDest As String,_    Startposition As Integer,_    MaxInsertLength As Integer,_    sInsert As String _)

这个编译器技巧纯粹是为了向后兼容.它内置于编译器中,因此不是您可以在自己的类型上实现的技巧.

所以

MID(TestString,3) = "fox"

MIDStmtStr(TestString,3,"fox")

希望这可以帮助,

总结

以上是内存溢出为你收集整理的VB.net Mid作为左运算符特殊(奇怪?)行为全部内容,希望文章能够帮你解决VB.net Mid作为左运算符特殊(奇怪?)行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1239522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存