我有一个c#函数从Datatable读取文件位置,并返回一个包含所有文件lcoations的List到调用方法。
在Catch
块中,我想返回一个带有false的空列表,因此调用方法可以取消它的操作。
但是我无法编译我的return
语句。
将列表作为引用传入并让函数返回布尔值true/false
会更好吗?
这是我正在尝试的代码:
public static List<string> getEmailAttachments(string emailID, System.Data.DataTable emails)
{
List<string> allAttachments;
//System.Data.DataTable oTbl = new DataTable();
try
{
System.Diagnostics.Debugger.Break();
var results = from myRow in emails.AsEnumerable()
where myRow.Field<string>("itemID") == emailID
select myRow;
System.Diagnostics.Debug.Print("attachments");
foreach (DataRow myRow in results)
{
System.Diagnostics.Debug.Print(myRow.Field<string>("attachmentsPath"));
allAttachments.Add(myRow.Field<string>("attachmentsPath"));
//DataTable dt = (DataTable)myRow["attachmentsPath"];
//DataTable oTbl = dt.Clone();
//DataRow[] orderRows = dt.Select("CustomerID = 2");
//foreach (DataRow dr in orderRows)
//{
// oTbl.ImportRow(dr);
//}
// myTable.ImportRow(dr);
//oTbl.Rows.Add(myRow);
//oTbl.ImportRow(myRow);
}
return allAttachments;
}
catch (Exception ex)
{
logBuilder("common.getEmailAttachments", "Exception", "", ex.Message, "");
return new List<string>emptyList(); // cannot compile
}
}
答案 0 :(得分:7)
如果有人还在寻找...
使用IEnumerable<string>
作为返回类型,并:
return Enumerable.Empty<string>();
答案 1 :(得分:6)
更改此行:
return new List<string>emptyList(); // cannot compile
为:
return new List<string>();
传递一个列表作为参考,并从函数返回一个布尔值,这是一个坏主意。您的方法称为getEmailAttachments
,它是加载附件,它应该返回附件。如果您想检查加载附件的结果,我建议您返回null
并检查返回的值。
答案 2 :(得分:3)
使用
return new List<string>();
答案 3 :(得分:2)
试试这个..
public static List<string> getEmailAttachments(string emailID, System.Data.DataTable emails)
{
List<string> allAttachments;
//System.Data.DataTable oTbl = new DataTable();
try
{
System.Diagnostics.Debugger.Break();
var results = from myRow in emails.AsEnumerable()
where myRow.Field<string>("itemID") == emailID
select myRow;
System.Diagnostics.Debug.Print("attachments");
foreach (DataRow myRow in results)
{
System.Diagnostics.Debug.Print(myRow.Field<string>("attachmentsPath"));
allAttachments.Add(myRow.Field<string>("attachmentsPath"));
//DataTable dt = (DataTable)myRow["attachmentsPath"];
//DataTable oTbl = dt.Clone();
//DataRow[] orderRows = dt.Select("CustomerID = 2");
//foreach (DataRow dr in orderRows)
//{
// oTbl.ImportRow(dr);
//}
// myTable.ImportRow(dr);
//oTbl.Rows.Add(myRow);
//oTbl.ImportRow(myRow);
}
//return allAttachments;
}
catch (Exception ex)
{
logBuilder("common.getEmailAttachments", "Exception", "", ex.Message, "");
allAttachments= new List<string>();
}
return allAttachments;
}
答案 4 :(得分:1)
我会采取略有不同的方法。 我将返回一个空列表,但也将初始容量设置为零!
赞:
return new List<string>(0);//notice the initial capacity to zero.
原因是内存消耗和优化...我知道这是一个微优化,但不会造成任何伤害。它实际上可能会使整个应用程序受益。
答案 5 :(得分:0)
怎么样
allAttachments.Clear();
return allAttachments;