簡體   English   中英

帶有DateTime []的C#數組

[英]C# Array with DateTime[]

如何將多個If語句轉換為單個數組以檢查具有相同名稱的多個文件的文件日期時間?

目前我有

if (location1)
{
    loc = 1;
    DateTime dateDailyFile1 = Convert.ToDateTime(File.GetLastWriteTime(ediFile1));
    if (Convert.ToDateTime(dateDailyFile1.ToShortDateString()) < Convert.ToDateTime(DateTime.Now.ToShortDateString()))
    {
        return false;
    }
    else
    {
        return true;
    }
}...

我做了大約20次。 你可能會收集的是非常艱苦的。 我想把它放在一個數組中,只是循環遍歷它,但數組上的DateTime賦值不斷拋出錯誤。 以下是我試圖將其更改為的代碼。 **限定符 - location []是通過單擊復選框分配的bool。

DateTime[] dateDailyFile;
string[] ediFile = { "file1", "file2", "file3", "file4" ... };
string[] loc = { "loc1", "loc2", "loc3", "loc4" ... };
int x;
for (x = 0; x < loc.length; x++)
{
    if (location[x])
        {
            dateDailyFile[x] = Convert.ToDateTime(File.GetLastWriteTime(ediFile[x]));
        }
}...

最后一行dateDailyFile [x] = Convert.ToDateTime(File.GetLastWriteTime(ediFile [x])); 是我的問題。 我得到一個“使用未分配的本地變量dateDailyFile”。

究竟我究竟做錯了什么,解決這個問題的最佳方法是什么?

將第一行更改為:

DateTime[] dateDailyFile = new DateTime[whateverIsTheExpectedLength];//20?

看起來你正試圖通過它們的字符串名來訪問變量,而這種語法是不可能的。 但是,您可以存儲在數組中,如下所示:

var ediFile = new []{ file1, file2, file3, file4 ... };
var loc = new [] { loc1, loc2, loc3, loc4 ... };

然后使用數組索引器訪問:

int x;
for (x = 0; x < loc.length; x++)
{
    if (location[x])
        {
            dateDailyFile[x] = Convert.ToDateTime(File.GetLastWriteTime(ediFile[x]));
        }
}...

數組需要在聲明中定義的長度。

您可以使用List ,它不需要聲明中指定的大小,使其更靈活:

List<DateTime> dateDailyFile;
string[] ediFile = { "file1", "file2", "file3", "file4" ... };
string[] loc = { "loc1", "loc2", "loc3", "loc4" ... };
int x;
for (x = 0; x < loc.length; x++)
{
    if (location[x])
        {
            dateDailyFile.Add(Convert.ToDateTime(File.GetLastWriteTime(ediFile[x])));
        }
}...

這是一個幫助我找出正確過程的組合。 D.Stanley對我的錯誤以及ispiro的更正的解釋幫助我找出了正確的過程 - 如下所列。

var ediFile = new[] {loc1, loc2, loc3, loc4 ...}
DateTime[] dateDailyFile = new DateTime[20]; 
int x;
        for (x = 0; x < bLocation.Length; x++)
        {
            if (bLocation[x])
            {
                ....
                dateDailyFile[x] = Convert.ToDateTime(File.GetLastWriteTime(ediFile[x]));
                return false;
            }
            else
            {
                return true;
            }
        }...

D. Stanley正確地確定了根本原因加上ispiro的建議我設法讓它運作起來。

修正中不需要String [] loc。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM