2
public class Part
{
public String VendorId { get; set; }
public String VendorPart { get; set; }
public String BasePart { get; set; }
public String Description { get; set; }
public ImageViewType View { get; set; }
}
private List<Part> partList = null;
private bool deleteOldFile = false;
我很好奇,爲什麼下面的代碼工作的布爾聲明(一旦partList
加載數據):在需要額外的括號
foreach (Part p in partList)
{
deleteOldFile = ((partList.Last().BasePart) == (p.BasePart));
MoveFile(FileType.Image, p, GetSetImageFile(imageBox1, currentFile));
}
及以下不工作(不落布爾deleteOldFile
到true):
foreach (Part p in partList)
{
deleteOldFile = (partList.Last().BasePart == p.BasePart);
MoveFile(FileType.Image, p, GetSetImageFile(imageBox1, currentFile));
}
請提供一個簡短但完整的程序來展示問題。你甚至不需要你在那裏的括號 - 它應該是'deleteOldFile = partList.Last()。BasePart == p.BasePart;'。請注意,循環後面的'deleteOldFile'的值只會是最後一次迭代的結果*,因爲您只是在每次迭代時覆蓋變量。那是故意的嗎? – 2014-10-16 16:10:26
在附註中,調用'foreach'中的'partList.Last()'將導致列表在每次迭代中枚舉。在循環外部創建'var lastPart = partList.Last()。BasePart;'可能會更好。 – valverij 2014-10-16 16:21:49
欣賞評論。目的是僅在最後一次迭代中將該值設置爲true。該程序旨在將單個文件複製到單獨文件夾中的多個獨特文件名。在最後一個副本上,舊文件被刪除。對不起,沒有解釋意圖或包括更多的程序。我只是想明白爲什麼第一個例子工作正常,但第二個例子沒有。 – 2014-10-16 17:31:42