2014-09-01 124 views
-3

這裏有一個小問題,我希望你們可以幫助我。奇怪的writeline(日期時間結果)

Console.Write("{0} {1} {2} {3} {4} " + customerdetails[i].CustomerNo, 
    customerdetails[i].surname, 
    customerdetails[i].forname, 
    customerdetails[i].street, 
    customerdetails[i].town, 
    customerdetails[i].DOB.ToString("dd/MM/yyyy")); 

這個小東西的實際工作和正常生產的一切,但它會彈出一些奇怪的事情是哪一種看起來像一些二進制的代碼示例後:

100名姓123街鎮1111年11月11日/ /正確

01-01-0001 0 
    01-01-0001 0 
    01-01-0001 0 //What is this? How to get rid of it 
    01-01-0001 0 

這是很顯然只是部分的代碼,我覺得有問題somwhere在這裏,但如果如果你們需要更多的代碼只是這麼說。

+6

這是'DateTime'的默認值(和最小值)。 – 2014-09-01 12:54:38

+2

「this」是否指唯一的'0'?那將是你的'客戶細節'[i] .CustomerNo'。 – CodeCaster 2014-09-01 12:56:21

+3

'「{0} {1} {2} {3} {4}」+ customerdetails [i] .CustomerNo' - 您在這裏混合字符串連接和格式化字符串,爲什麼? – 2014-09-01 12:56:44

回答

3

最後0CustomerNo,因爲你的格式字符串:

"{0} {1} {2} {3} {4} " + customerdetails[i].CustomerNo 

其中就變成了:

"{0} {1} {2} {3} {4} 0" 

此時你排擠在{4}位置的日期,但最終0仍然存在。

要擺脫它取代+,並將其替換格式字符串:

"{0} {1} {2} {3} {4} {5}" 

現在CustomerNo將在第一的位置。

替換默認DateTime值做到這一點:

string dob; 

if (customerdetails[i].DOB == DateTime.MinValue) 
{ 
    dob = "(unknown)"; // or whatever 
} 
else 
{ 
    dob = customerdetails[i].DOB.ToString("dd/MM/yyyy"); 
} 

現在使用dob作爲Console.Write()的參數。

+0

然後零仍然會顯示,因爲它只是'CustomNo'的值,或者不是? – 2014-09-01 13:00:13

+0

是的,但是在第一列中,不是在日期時間之後的最後一個,這使OP很困惑。 – pid 2014-09-01 13:00:42

1

有沒有辦法設置[日期時間],所以它不會顯示默認值?只有我輸入的那些?

默認日期時間和代碼之間沒有區別。如果您想表示「無日期」,請使用可表示爲DateTime?的可爲空的日期時間。

+0

我通過類似Console.Write(「\ n \ t \ t \ t輸入客戶姓名:」)輸入所有客戶詳細信息; customerdetails [x] .surname = Console.ReadLine();而現在最大客戶只有5個,所以默認情況下,沒有太多的默認日期,但我想將其更改爲更高的像30.因此,我想我的問題是我怎麼能打印出所有的customerdetails已被手動填充而不使用陣列中的每個空間。 – Skretek112 2014-09-01 13:08:07

2

我相信你創建customerdetails實例的數組,但只有初始化的第一個指數實例。假設你的代碼:

Console.Write("{0} {1} {2} {3} {4} " + customerdetails[i].CustomerNo, 
    customerdetails[i].surname, 
    customerdetails[i].forname, 
    customerdetails[i].street, 
    customerdetails[i].town, 
    customerdetails[i].DOB.ToString("dd/MM/yyyy")); 

是一個for循環,所以你customerdetails[0]獲得價值,並在列表中的其餘部分只是顯示其默認值。

01-01-0001的日期時間

0整數

string.Empty字符串

爲了擺脫不需要的值的,剛剛從數組列表中刪除那些未初始化實例。