调用另外一个同名的重载函数漏掉括号出现的严重问题
来源:互联网 发布:qq软件安卓源码 编辑:程序博客网 时间:2024/05/27 14:15
我的ASP.NET不能调试了,由于只是改一个页面,觉的不调试也行吧。仔细检查一下代码就可以了。
可是今天碰到的问题实在是没有检查出来,后来把代码拷贝到笔记本上调试,单步跟踪一下就找出问题来了!
Public Function GetInsertSql() As String
Dim strSql As String
strSql = String.Format("Insert Into {0}(inputID,itemID, 数据) values({1},{2},{3});", _TableData, _ReportID, _ItemID, _value)
Return strSql
End Function
Public Function GetInsertSql(ByVal ddl As DropDownList) As String
If ddl.Items.Count = 0 Then
Return GetInsertSql '这里少了括号,应该是Return GetInsertSql()
'因为在VB.NET中函数名代表要返回的对象,编译不会出现错误。
'如果是直接用GetInsertSql的话是个Nothing
'如果是GetInsertSql()表示调用上面的重载函数GetInsertSql(),这样才是正确的
'可以这样理解: 系统隐式的声明了一个这样的变量,变量名是函数名,类型是函数的返回类型
End If
Dim strSql As String = ""
Dim V As Double
Dim sel As String = ddl.SelectedValue
For Each item As ListItem In ddl.Items
V = IIf(item.Value = sel, _value, 0)
strSql &= String.Format("Insert Into {0}(inputID,itemID,数据,版种) values({1},{2},{3},'{4}');", _TableData, _ReportID, _ItemID, V, item.Text.Trim())
Next
Return strSql
End Function
真是个很隐蔽的错误,以后要注意了,括号自己加上的好(以前都是VB.NET自动加上括号的)
对于这样的问题,编译器应该提出警告才对,或者当取消用函数名来代表返回值。
虽然MSDN是这样赞美的:
将返回值分配给函数名的优点是,直到程序遇到 Exit Function 或 End Function 语句时函数才返回控制。这样就可以先分配一个初步的值,以后如有必要再进行调整。
- 调用另外一个同名的重载函数漏掉括号出现的严重问题
- 同名函数的调用问题
- 针对重载函数调用运算符的一个使用的例子,也就是重载()这个括号
- JavaScript同名函数的调用
- 类的同名覆盖和函数重载
- 函数模板与同名的非模板函数重载的时候,两者调用顺序
- Webservice中如何实现方法重载--(方法名同名时出现的问题)
- Cookie出现两个同名Key的问题
- 用字符串调用同名的函数
- 如何确保一个函数的被调用次数不少于另外一个函数的被调用次数?
- js中同名函数和同名变量的执行问题
- 函数重载的一个小问题
- 警惕:函数同名引起的问题
- (学习笔记)JavaScript中调用函数的括号问题
- script里的onclick函数调用是否加括号问题
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- 注重实效的程序员(The Pragmatic Programmer)
- 很有意境的语句[转]
- 救命啊
- 爱不是等来的~
- 牛顿法和割线法
- 调用另外一个同名的重载函数漏掉括号出现的严重问题
- 网络蜘蛛原理~ 转 http://www.sysinfo.cn/show.php?id=35
- OpenBSD 3.6安装光盘简单制作教程
- 互联网最值钱的地皮在哪儿?
- MPEG4 & H.264学习笔记之三 ------ 图像模型(图像处理过程)
- 【转载】kgdb调试环境的建立
- 用JBuilder 开发J2ME程序的配置
- 关于恶魔与天使的断想
- 【转载】在Debian下从源代码构造可以进行调试的UML