2014-09-22 65 views
0

一直快乐地写这样的代码:Visual Studio中突然要我申报循环迭代

For idtArticles = 0 To dtArticles.Rows.Count - 1 

这:

If request.QueryString.HasKeys() Then 
    For Each parameter In request.QueryString.AllKeys 
     requestVars.Add(parameter, request.QueryString(parameter)) 
    Next 
Else... 

突然不能编译,并给予错误

错误34'idtArticles'未被声明。由于其保护级别,可能无法访问。 ..userAccountModel.vb

哪些假设我不能回到我的懒办法是罚款编辑为

For idtArticles as Integer 

但我不知道什么exampple请求集合,将宣布as ..

错误39'参数'是一种类型,不能用作 表达式。 ..userAccountModel.vb

我该如何让它回到不关心的地步?另外如果没有,我应该怎么样Parameter那么​​?

我检查过并且Option Strict已关闭。在工具..默认项目设置。

谢谢!

+0

是否dtArticles是公开的? – Max 2014-09-22 19:34:03

+0

['''Parameter'是一个类型...'](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.parameter(v = vs.110).aspx)使用类似'p'或'parm'的东西,它应该可以工作。 VS/VB **可能会**与您在代码中做什么混淆的事实应该让您暂停关于Option Strict Off。值得注意的是,Option Infer会允许'For idtArticles = 0';类型可以从上下文推断 – Plutonix 2014-09-22 19:41:48

+0

@max dtArticles被声明只是瞬间之前,不可用外部Sub – bendecko 2014-09-22 19:50:20

回答

3

从微软文档上Option Infer Statement

当您设置选项推断,你可以声明局部变量 没有明确说明的数据类型。编译器根据其初始化表达式的类型推断出变量的数据类型 。

我会在你的代码文件的顶部试试这个:

Option Infer On 

,或者你可以在我的项目更改此 - >编译 - 选项推断,正确的选项下的严格!

enter image description here

+0

是的,就是这样。错误1:我正在查看Option Strict。错误2:我正在查看工具中的默认值..选项...一旦创建的项目设置为这个答案。谢谢大家! – bendecko 2014-09-22 20:46:34

+1

+1非常好。我不知道,因为我总是宣布我的变数。 – 2014-09-22 21:04:02