这是一个小问题,我希望你们能帮助我。
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 Street Town 11/11/1111 //正确
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
这显然只是代码的一部分,我认为这里存在问题,但是如果你们需要更多代码就这么说。
答案 0 :(得分:3)
最终0
是CustomerNo
,因为您的格式字符串为:
"{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()
的参数。
答案 1 :(得分: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
表示字符串
要删除不需要的值,只需从数组列表中删除那些未初始化的实例。
答案 2 :(得分:1)
有没有办法设置[DateTime]所以它不会显示默认值?只有我输入的那些?
默认DateTime和代码设置之间没有区别。如果要表示“无日期”,请使用以DateTime?
表示的可为空的DateTime。