这样简单的一个函数也会有异常?

lkkjx 2002-06-03 03:18:49
Public Class dateString
Overridable Function msgstr(ByVal tempStr As String)
MsgBox(tempStr)
End Function
End Class

Public Class sdateString
Inherits dateString
Overrides Function msgstr(ByVal tempStr As String)
A--  If Len(tempStr) > 7 Then
MsgBox("> 7")
Else
MyClass.msgstr(tempStr)
End If
End Function
End Class

运行到A处,出现这样的错误提示
未处理的“System.StackOverflowException”类型的异常出现在 mscorlib.dll 中
...全文
25 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
proking 2002-06-03
  • 打赏
  • 举报
回复
意思是你的函數進入了死循環.
你不能再次執行

MyClass.msgstr(tempStr)
lkkjx 2002-06-03
  • 打赏
  • 举报
回复
谢谢,那我如何加入出口条件呢?
lkkjx 2002-06-03
  • 打赏
  • 举报
回复
谢谢,那我如果加入出口条件呢?
acptvb 2002-06-03
  • 打赏
  • 举报
回复
感谢您使用微软产品。

您在sdateString中重载的方法msgstr由于没有出口条件,出现了没有出口的递归调用。当tempStr长度小于等于7时将出现重复地调用msgstr方法而不会停止,最终将产生您所描述的System.StackOverflowException堆栈溢出错误。您需要修改msgstr方法,请参考以下代码:
Public Class sdateString
Inherits dateString
Overrides Function msgstr(ByVal tempStr As String)
If Len(tempStr) > 7 Then
MsgBox("> 7")
Else
MsgBox(tempStr)
End If
End Function
End Class

微软全球技术中心 VB技术支持
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧