我是C#/ OOP的新手,正致力于将现有应用程序转换为.net 4.0框架。
我的代码如下:
Class abc
private IList<string[]> GetReportBatchList()
{
List<string[]> rowList = new List<string[]>();
SqlParameter[] prm = { new SqlParameter("@rpt_doc_type_id", SqlDbType.Int, 9) };
prm[0].Value = 101;
try
{
.....
.....
.....
}
return rowList;
}
class xyz
using abc;
Private Function GenerateReport()
Try
{
Dim rptBatchList As ??????
rptBatchList = GetReportBatchList()
While rptBatchList.Read()
......
......
......
}
catch
{
......
}
应将rptBatchList声明为什么类型?
答案 0 :(得分:0)
由于GetReportBatchList()的返回值具有字符串的IList作为其类型,因此rptBatchList应该是相同的类型。
答案 1 :(得分:0)
嗯...这是关于正确返回类型的问题,还是关于将C#转换为VB.Net的问题?
根据你所拥有的函数定义,rptBatchList
的类型为IList<string[]>
- 显然是用VB.Net的正确语法声明的。
除此之外,因为它是一个字符串数组列表,它没有Read()函数,所以也许你正在寻找一些派生自DbDataReader
的东西(比如SqlDataReader)?如果您打算坚持使用当前定义,那么您可以使用foreach
或for
循环来迭代列表元素,或者您可以使用Linq扩展并使用以下内容:
rptBatchList.ForEach(z => { z.ForEach(x => doSomethingWithThisResultString(x)); } );
虽然这可能会变得很乱 - 你可能只想坚持使用几个嵌套的foreach
循环。
答案 2 :(得分:0)
你的第二个例子是VB,但你说你正在使用C#,所以......
对于C#,它将是IList<string[]>
。
我的VB有点生疏,但我认为它会是IList(Of String())
。