【问题标题】:VB.NET: error BC30389: 'i' is not accessible in this context because it is 'Friend'VB.NET:错误 BC30389:在此上下文中无法访问“我”,因为它是“朋友”
【发布时间】:2015-08-06 14:33:50
【问题描述】:

我维护一个面向 .NET 3.5 的 ASP.NET/VB.NET 网站。我曾经构建没有任何问题。突然间我开始遇到构建错误:

错误 BC30389:在此上下文中无法访问“i”,因为它是“朋友”

对于每个单字母 for 循环控制变量。例如:

For i = 0 To oDataTable.Columns.Count - 1
strHtml += "<td style='border : 1px solid black; font-size :13pt;'>" +         oDataTable.Columns(i).ColumnName + "</td>"
Next

如果我将 var 名称从 'i' 更改为 'ii' 它会消失,但这不是一个选项,因为我们在这个站点的一百万个地方使用了类似的循环控制 var。我以前从未见过这种类型的错误。

这是我的编译器设置:

<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>

我的工作站上唯一的新东西是我安装了 .NET 4.5.2。

任何帮助将不胜感激。

【问题讨论】:

  • 听起来好像存在一个名为 i 的 Friend 变量,它与您的循环变量冲突。如果您右键单击并选择Go to definition,也许您可​​以找到friend 变量。
  • 您是否先调暗变量?如果没有,我建议你打开 Option Strict

标签: asp.net vb.net compilation


【解决方案1】:

我认为 For Each 是循环遍历大小未知的集合的更好方法。这样您就可以像这样使用For Each 遍历Datacolumns

    Dim strHtml As new  StringBuilder()
    For Each dc As DataColumn In oDataTable.Columns
        strHtml.Append("<td style='border : 1px solid black; font-size :13pt;'>" + dc.ColumnName + "</td>")
    Next

在这里我建议您使用StringBuilder 代替字符串。因为它消耗的内存更少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-27
    • 2016-05-22
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多