C# 以字节和MB为单位显示值
我尝试在我的MessageBox中设置一个IF条件,如果C# 以字节和MB为单位显示值,c#,visual-studio,C#,Visual Studio,我尝试在我的MessageBox中设置一个IF条件,如果freeSpaceInC/(1000000)1024以MB显示,则该值以字节为单位 我有下一个代码,但无法生成更简单?以及如何识别下一个ifif(dialogResult==dialogResult.Yes): static void Main() { var驱动=新驱动信息(“c”); long freeSpaceInC=drive.TotalFreeSpace; var drive1=新的DriveInfo(“d”); lo
freeSpaceInC/(1000000)1024
以MB显示,则该值以字节为单位
我有下一个代码,但无法生成更简单?以及如何识别下一个ifif(dialogResult==dialogResult.Yes)
:
static void Main()
{
var驱动=新驱动信息(“c”);
long freeSpaceInC=drive.TotalFreeSpace;
var drive1=新的DriveInfo(“d”);
long freeSpaceInD=drive.TotalFreeSpace;
如果((freeSpaceInC/(1000000)<1024)和&(freeSpaceInD/(1000000)<1024))
{
DialogResult DialogResult=MessageBox.Show(“C:中有“+freeSpaceInC/(1000000)+”B空闲,D:中有“+freeSpaceInD/(1000000)+”B空闲,是否继续安装?”,“MATLAB_R2008a_ENU_EU”,MessageBoxButtons.YesNo);
}
否则如果((freeSpaceInC/(1000000)>1024)和&(freeSpaceInD/(1000000)>1024))
{
DialogResult DialogResult=MessageBox.Show(“C:中有“+freeSpaceInC/(1000000)+”MB空闲空间,D:中有“+freeSpaceInD/(1000000)+”MB空闲空间,是否继续安装?”,“MATLAB_R2008a_ENU_EU”,MessageBoxButtons.YesNo);
}
否则如果((freeSpaceInC/(1000000)>1024)和&(freeSpaceInD/(1000000)<1024))
{
DialogResult DialogResult=MessageBox.Show(“C:中有“+freeSpaceInC/(1000000)+”MB可用空间,D:中有“+freeSpaceInD/(1000000)+”B可用空间:。是否继续安装?”,“MATLAB_R2008a_ENU_EU”,MessageBoxButtons.YesNo);
}
否则如果((freeSpaceInC/(1000000)<1024)和&(freeSpaceInD/(1000000)>1024))
{
DialogResult DialogResult=MessageBox.Show(“C:中有“+freeSpaceInC/(1000000)+”B可用,“+freeSpaceInD/(1000000)+”D:中有“+freeSpaceInD/(MB可用:。是否继续安装?”,“MATLAB_R2008a_ENU_EU”,MessageBoxButtons.YesNo);
}
如果(dialogResult==dialogResult.Yes)
{
Form1 fm1=新Form1();
fm1.ShowDialog();
fm1.Close();
}
else if(dialogResult==dialogResult.No)
{
Application.Exit();
}
}
您可以做得更简单:
static void Main()
{
DialogResult dialogResult = MessageBox.Show("There is " + toReadableSize(freeSpaceInC) + " free in C: and " + toReadableSize(freeSpaceInD) + " free in D:. Do you want to continue the installation?", "MATLAB_R2008a_ENU_EU", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Form1 fm1 = new Form1();
fm1.ShowDialog();
fm1.Close();
}
else if (dialogResult == DialogResult.No)
{
Application.Exit();
}
}
private static string toReadableSize(int size)
{
if(size < 1024)
return size + "B";
if(size < 1024*1024)
return Math.Round(((float)size / 1024), 2) + "KB";
if(size < 1024*1024*1024)
return Math.Round(((float)size / (1024*1024)), 2) + "MB";
return Math.Round(((float)size / (1024*1024*1024)), 2) + "GB";
}
static void Main()
{
DialogResult DialogResult=MessageBox.Show(“C:中有“+toReadableSize(freeSpaceInC)+”free:和“+toReadableSize(freeSpaceInD)+”free:中有“+toReadableSize(freeSpaceInD):”是否继续安装?”,“MATLAB_R2008a_ENU_EU”,MessageBoxButtons.YesNo);
如果(dialogResult==dialogResult.Yes)
{
Form1 fm1=新Form1();
fm1.ShowDialog();
fm1.Close();
}
else if(dialogResult==dialogResult.No)
{
Application.Exit();
}
}
私有静态字符串toReadableSize(整型大小)
{
如果(大小<1024)
返回大小+“B”;
如果(大小<1024*1024)
返回数学圆((浮点)大小/1024),2)+“KB”;
如果(大小<1024*1024*1024)
返回数学圆((浮点)大小/(1024*1024)),2)+“MB”;
返回数学圆((浮点)大小/(1024*1024*1024)),2)+“GB”;
}
您可以做得更简单:
static void Main()
{
DialogResult dialogResult = MessageBox.Show("There is " + toReadableSize(freeSpaceInC) + " free in C: and " + toReadableSize(freeSpaceInD) + " free in D:. Do you want to continue the installation?", "MATLAB_R2008a_ENU_EU", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Form1 fm1 = new Form1();
fm1.ShowDialog();
fm1.Close();
}
else if (dialogResult == DialogResult.No)
{
Application.Exit();
}
}
private static string toReadableSize(int size)
{
if(size < 1024)
return size + "B";
if(size < 1024*1024)
return Math.Round(((float)size / 1024), 2) + "KB";
if(size < 1024*1024*1024)
return Math.Round(((float)size / (1024*1024)), 2) + "MB";
return Math.Round(((float)size / (1024*1024*1024)), 2) + "GB";
}
static void Main()
{
DialogResult DialogResult=MessageBox.Show(“C:中有“+toReadableSize(freeSpaceInC)+”free:和“+toReadableSize(freeSpaceInD)+”free:中有“+toReadableSize(freeSpaceInD):”是否继续安装?”,“MATLAB_R2008a_ENU_EU”,MessageBoxButtons.YesNo);
如果(dialogResult==dialogResult.Yes)
{
Form1 fm1=新Form1();
fm1.ShowDialog();
fm1.Close();
}
else if(dialogResult==dialogResult.No)
{
Application.Exit();
}
}
私有静态字符串toReadableSize(整型大小)
{
如果(大小<1024)
返回大小+“B”;
如果(大小<1024*1024)
返回数学圆((浮点)大小/1024),2)+“KB”;
如果(大小<1024*1024*1024)
返回数学圆((浮点)大小/(1024*1024)),2)+“MB”;
返回数学圆((浮点)大小/(1024*1024*1024)),2)+“GB”;
}
或者您可以使用类似于以下内容的通用解决方案:
string TranslateSize(long value) {
var table =
Enumerable
.Range(0, 5)
.Select(x => {
var @base = (long)Math.Pow(1024, x);
return new {
Start = x != 0 ? @base : 0,
End = 1024 * @base,
Divider = @base,
Suffix = ""
};})
.Zip(
new []{"B", "kB", "MB", "GB", "TB"},
(l, r) => new {
l.Start,
l.End,
l.Divider,
Suffix = r
});
var result = table.Single(x => x.Start <= value && value < x.End);
return result;
}
string TranslateSize(长值){
变量表=
可枚举
.范围(0,5)
.选择(x=>{
var@base=(long)Math.Pow(1024,x);
还新{
起点=x!=0?@base:0,
结束=1024*@基,
除法器=@base,
后缀=“”
};})
Zip先生(
新[]{“B”、“kB”、“MB”、“GB”、“TB”},
(l,r)=>新{
l、 开始,
l、 完,,
l、 分隔器,
后缀=r
});
var result=table.Single(x=>x.Start或者您可以使用类似于以下内容的通用解决方案:
string TranslateSize(long value) {
var table =
Enumerable
.Range(0, 5)
.Select(x => {
var @base = (long)Math.Pow(1024, x);
return new {
Start = x != 0 ? @base : 0,
End = 1024 * @base,
Divider = @base,
Suffix = ""
};})
.Zip(
new []{"B", "kB", "MB", "GB", "TB"},
(l, r) => new {
l.Start,
l.End,
l.Divider,
Suffix = r
});
var result = table.Single(x => x.Start <= value && value < x.End);
return result;
}
string TranslateSize(长值){
变量表=
可枚举
.范围(0,5)
.选择(x=>{
var@base=(long)Math.Pow(1024,x);
还新{
起点=x!=0?@base:0,
结束=1024*@基,
除法器=@base,
后缀=“”
};})
Zip先生(
新[]{“B”、“kB”、“MB”、“GB”、“TB”},
(l,r)=>新{
l、 开始,
l、 完,,
l、 分隔器,
后缀=r
});
var result=table.Single(x=>x.Start)您能提供一些关于您的情况的更多信息吗?您想检查什么?freeSpaceInC给我C:\drive的可用空间,数字>1024,然后在消息框中显示“number”MB,如果数字是,那是什么?/(1000000)我只是觉得你做错了什么。你必须在条件之外声明dialogResult
。如果你想,你可以忽略/1000000,数字是以字节为单位的,如果不是,结果是以MB为单位的。你能提供一些关于你的条件的更多信息吗?你想检查什么?freeSpaceInC给我C:\drive,a的可用空间nd数字大于1024,然后在MessageBox中设置为