【发布时间】:2014-06-15 11:06:09
【问题描述】:
System.IO.File.GetLength 以字节为单位给出文件的大小。我正在尝试做的是采用该大小(以字节为单位)并将其转换为可能的最高单位,而不会让大小变得小于 1。例如,我想要在大小列中显示“2048”而不是“2 KB”显示。代码如下:
private string sizeDown(string size)
{
decimal sizeoffile = Convert.ToDecimal(size);
int downed = 0;
do
{
sizeoffile = sizeoffile / 1024;
downed += 1;
}
while (sizeoffile > 1024);
if (downed > 3)
{
return "";
}
else
{
switch (downed)
{
case 0:
return Convert.ToString(sizeoffile) + " bytes";
break;
case 1:
return Convert.ToString(sizeoffile) + " KB";
break;
case 2:
return Convert.ToString(sizeoffile) + " MB";
break;
case 3:
return Convert.ToString(sizeoffile) + " GB";
}
}
}
但是,正如您可能从标题中看到的那样,Visual Studio 告诉我并非所有代码路径都返回值。我很困惑。什么大小的值会导致我的代码不返回值?
(顺便说一句,我知道我将大小作为字符串,然后将其转换为小数 - 我这样做是为了方便。)
【问题讨论】:
-
如果
downed是负数怎么办? -
删除
if(downed > 3)并将其作为default添加到switch语句中。 -
else part deafult case 丢失
-
您的代码也不适用于字节。删除
do关键字并将其替换为while。或者看我的例子。
标签: c#