方法参数不能为变量,这是为什么?怎么解决呢?在线等

lys1706228 2008-12-09 03:43:23
conn.Open();
foreach (string var in strTableName)
{
// 常量时没有问题
DataTable shemaColumnsInfo3 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "aa", null });
DataTable shemaColumnsInfo4 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "bb", null });
//变量时,第一次循环没问题,第二次就是空表
DataTable shemaColumnsInfo1 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, var, null });
DataTable shemaColumnsInfo2 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, var, null });
}

conn.Close();
...全文
162 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
lys1706228 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 MicroDeviser 的回复:]
顶,var是关键字,怎么用它来做变量名呢
[/Quote]
改了也不行,不是这个问题
MicroDeviser 2008-12-10
  • 打赏
  • 举报
回复
顶,var是关键字,怎么用它来做变量名呢
lys1706228 2008-12-10
  • 打赏
  • 举报
回复
:(
norron 2008-12-09
  • 打赏
  • 举报
回复
foreach (string @var in strTableName)

里,换成了@var 里面的var了应该换成@var才对啊
norron 2008-12-09
  • 打赏
  • 举报
回复
单步跟踪“shemaColumnsInfo1.rows.count”的值,看到下它是在哪一步的时候由2变到0的。

lys1706228 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 duy02 的回复:]
问题不在Foreach吧 应该是在
new object[] { null, null, var, null }
这里吧
[/Quote]
-----
有道理
lys1706228 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 qinhl99 的回复:]
引用 11 楼 lys1706228 的回复:
引用 6 楼 ojlovecd 的回复:
引用 4 楼 lys1706228 的回复:
引用 2 楼 ojlovecd 的回复:
试试这样:
foreach (string @var in strTableName)

----------
这样也不行,您在帮忙想想办法

提示什么错

-----------------
不提示任何错误
举例
strTableName[0]=“aa”;strTableName[0]=“bb”;

foreach (string @var in strTableName)
{
DataTable shemaColumnsIn…
[/Quote]

------------都试过了 谢谢关注
lys1706228 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 ojlovecd 的回复:]
引用 17 楼 lys1706228 的回复:
引用 12 楼 ojlovecd 的回复:
引用 11 楼 lys1706228 的回复:
引用 6 楼 ojlovecd 的回复:
引用 4 楼 lys1706228 的回复:
引用 2 楼 ojlovecd 的回复:
试试这样:
foreach (string @var in strTableName)

----------
这样也不行,您在帮忙想想办法

提示什么错

-----------------
不提示任何错误
举例
strTableName[0]=“aa”;strTableName[0]=“bb”;

foreac…
[/Quote]

-------程序发过去了,请查收。GetColumnsInfo 这个方法测试都改乱了,您凑合看
qinhl99 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lys1706228 的回复:]
引用 6 楼 ojlovecd 的回复:
引用 4 楼 lys1706228 的回复:
引用 2 楼 ojlovecd 的回复:
试试这样:
foreach (string @var in strTableName)

----------
这样也不行,您在帮忙想想办法

提示什么错

-----------------
不提示任何错误
举例
strTableName[0]=“aa”;strTableName[0]=“bb”;

foreach (string @var in strTableName)
{
DataTable shemaColumnsInfo3 = conn.GetOleDbSchemaTable(…
[/Quote]



你直接用for好了,另外,换个名字,不要用var
我姓区不姓区 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 lys1706228 的回复:]
引用 12 楼 ojlovecd 的回复:
引用 11 楼 lys1706228 的回复:
引用 6 楼 ojlovecd 的回复:
引用 4 楼 lys1706228 的回复:
引用 2 楼 ojlovecd 的回复:
试试这样:
foreach (string @var in strTableName)

----------
这样也不行,您在帮忙想想办法

提示什么错

-----------------
不提示任何错误
举例
strTableName[0]=“aa”;strTableName[0]=“bb”;

foreach (string @var in strTableName)
{
DataTable…
[/Quote]
lonelyjano@163.com发过来吧
lys1706228 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ojlovecd 的回复:]
引用 11 楼 lys1706228 的回复:
引用 6 楼 ojlovecd 的回复:
引用 4 楼 lys1706228 的回复:
引用 2 楼 ojlovecd 的回复:
试试这样:
foreach (string @var in strTableName)

----------
这样也不行,您在帮忙想想办法

提示什么错

-----------------
不提示任何错误
举例
strTableName[0]=“aa”;strTableName[0]=“bb”;

foreach (string @var in strTableName)
{
DataTable shemaColumnsIn…
[/Quote]

要不发给您,您帮我调试下行吗?
我姓区不姓区 2008-12-09
  • 打赏
  • 举报
回复
那你要是把
DataTable shemaColumnsInfo3 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "aa", null });
DataTable shemaColumnsInfo4 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "bb", null });
这两句删掉呢
messagewanted 2008-12-09
  • 打赏
  • 举报
回复
up
duy02 2008-12-09
  • 打赏
  • 举报
回复
问题不在Foreach吧 应该是在
new object[] { null, null, var, null }
这里吧
lys1706228 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ojlovecd 的回复:]
引用 11 楼 lys1706228 的回复:
引用 6 楼 ojlovecd 的回复:
引用 4 楼 lys1706228 的回复:
引用 2 楼 ojlovecd 的回复:
试试这样:
foreach (string @var in strTableName)

----------
这样也不行,您在帮忙想想办法

提示什么错

-----------------
不提示任何错误
举例
strTableName[0]=“aa”;strTableName[0]=“bb”;
foreach (string @var in strTableName)
{
DataTable shemaColumnsIn…
[/Quote]
--------------
是写错了strTableName[1]=“bb”;

进入的是bb 所以很奇怪
我姓区不姓区 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lys1706228 的回复:]
引用 6 楼 ojlovecd 的回复:
引用 4 楼 lys1706228 的回复:
引用 2 楼 ojlovecd 的回复:
试试这样:
foreach (string @var in strTableName)

----------
这样也不行,您在帮忙想想办法

提示什么错

-----------------
不提示任何错误
举例
strTableName[0]=“aa”;strTableName[0]=“bb”;

foreach (string @var in strTableName)
{
DataTable shemaColumnsInfo3 = conn.GetOleDbSchemaTable(OleDbSchemaGui…
[/Quote]
不知道你这里是不是写错了,下标都是0
你确定第二次进入的时候var是bb?加断电调试过了吗?
lys1706228 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ojlovecd 的回复:]
引用 4 楼 lys1706228 的回复:
引用 2 楼 ojlovecd 的回复:
试试这样:
foreach (string @var in strTableName)

----------
这样也不行,您在帮忙想想办法

提示什么错
[/Quote]
-----------------
不提示任何错误
举例
strTableName[0]=“aa”;strTableName[0]=“bb”;

foreach (string @var in strTableName)
{
DataTable shemaColumnsInfo3 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, “aa”, null });

返回的shemaColumnsInfo3.rows.count 为2

DataTable shemaColumnsInfo4 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, “bb”, null });
返回的shemaColumnsInfo3.rows4count 为4
DataTable shemaColumnsInfo1 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, var, null });
返回的shemaColumnsInfo1.rows.count 为0
}
foreach 第一次进入 如果 @var=“aa”
DataTable shemaColumnsInfo3 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, “aa”, null });
返回的shemaColumnsInfo3.rows.count 为2

DataTable shemaColumnsInfo4 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, “bb”, null });
返回的shemaColumnsInfo3.rows4count 为4


DataTable shemaColumnsInfo1 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, var, null });
返回的shemaColumnsInfo1.rows.count 为2

foreach 第二次进入 @var=“bb”
DataTable shemaColumnsInfo3 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, “aa”, null });
返回的shemaColumnsInfo3.rows.count 为2

DataTable shemaColumnsInfo4 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, “bb”, null });
返回的shemaColumnsInfo3.rows4count 为4


DataTable shemaColumnsInfo1 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, var, null });
返回的shemaColumnsInfo1.rows.count 为0



------------------ 问题就是这样


birdlonger 2008-12-09
  • 打赏
  • 举报
回复
mark !
HDNGO 2008-12-09
  • 打赏
  • 举报
回复
可以赋予局部变量推断“类型”var 而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型或 .NET Framework 类库中定义的类型。

// i is compiled as an int
var i = 5;

// s is compiled as a string
var s = "Hello";

// a is compiled as int[]
var a = new[] { 0, 1, 2 };

// expr is compiled as IEnumerable<Customer>
// or perhaps IQueryable<Customer>
var expr =
from c in customers
where c.City == "London"
select c;

// anon is compiled as an anonymous type
var anon = new { Name = "Terry", Age = 34 };

// list is compiled as List<int>
var list = new List<int>();

HDNGO 2008-12-09
  • 打赏
  • 举报
回复
var是关键字吧。。。
class ImplicitlyTypedLocals2
{
static void Main()
{
string[] words = { "aPPLE", "BlUeBeRrY", "cHeRry" };

// If a query produces a sequence of anonymous types,
// then use var in the foreach statement to access the properties.
var upperLowerWords =
from w in words
select new { Upper = w.ToUpper(), Lower = w.ToLower() };

// Execute the query
foreach (var ul in upperLowerWords)
{
Console.WriteLine("Uppercase: {0}, Lowercase: {1}", ul.Upper, ul.Lower);
}
}
}
/* Outputs:
Uppercase: APPLE, Lowercase: apple
Uppercase: BLUEBERRY, Lowercase: blueberry
Uppercase: CHERRY, Lowercase: cherry
*/
加载更多回复(7)

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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