特投网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

(站外) 特投工作室

查看: 3378|回复: 0

C#/.NET不使用判断语句实现Bytes到KB,MB,GB,TB单位智能转换

[复制链接]

2569

主题

1018

回帖

6万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
69667
QQ
发表于 2016-3-7 19:39:26 | 显示全部楼层 |阅读模式
在C#/.NET的开发中,如果遇到需要实现Bytes到KB,MB,GB,TB单位转换这样的问题,你会想到的方法有哪些呢?使用if或者switch判断语句,根据传入的Bytes大小来判断返回对应的单位?形如:

public static string ConvertByte(long len)
{
  if(len>1024&&len<1024*1024)
  {
    ......
  }
  if(len>1024*1024&&len<1024*1024*1024)
  {
    ......
  }
  ......
  return ...
}

相信有人这样干过吧,笔者以前也这样写过。但做对.NET的开发人员来说,我们在写代码的时候还是应该有些追求的–追求代码执行的效率、追求代码实现的美观。对于实现同样一个结果来说,不同的开发人员会有不同的实现过程。就像本文题目中涉及到的问题,C#/.NET从Bytes转换到KB,MB,GB,TB这个实现也有,下面就来个简单的实现方法,直接看代码:

public static string ConvertBytes(this long len)
{
      string[] sizes = { "Bytes", "KB", "MB", "GB", "TB" };
      int order = 0;
      while (len >= 1024 && order + 1 < sizes.Length)
      {
        order++;
        len = len / 1024;
      }
      return String.Format("{0:0.##} {1}", len, sizes[order]);
}
怎么样,是否感觉高大尚了。哈哈。。。

如果你有更好的实现方式,欢迎交流!!!

转自:http://2sharings.com/2015/csharp ... ytes-to-kb-mb-gb-tb
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

您尚未登录,请登录后浏览更多精彩内容!
 立即注册
找回密码

QQ|Archiver|手机版|小黑屋|特投网 ( 皖ICP备13010674号-1 

GMT+8, 2024-4-16 12:00 , Processed in 0.026729 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表