0
    private string ReadableFileSize()
    {
        LoadFileInfo();
        var length = _info.Length;

        if (length < Math.Pow(1024, 1)) 
            return length + " B";               //lower than 1kb
        if (length < Math.Pow(1024, 2)) 
            return TrimSize(length, 1) + " KB"; //lower than 1mb
        if (length < Math.Pow(1024, 3)) 
            return TrimSize(length, 2) + " MB"; //lower than 1gb
        if (length < Math.Pow(1024, 4)) 
            return TrimSize(length, 3) + " GB"; //lower than 1tb

        return length + " TB";//return size in tb    
    }
Vladimir
  • 403
  • 1
    можно, но зачем? – tym32167 Jan 29 '23 at 18:49
  • Я думаю что свич более выглядеть читабельным чем if. Хотя под капотом он преобразуется if :) – Vladimir Jan 29 '23 at 19:42
  • 1
    Я на вашем месте подумал бы не о том, как поменять шило на мыло, а о том, как убрать дубликаты и сократить вовсе код. Например, вот, как видите, if вдруг и вовсе не нужны, да и код кажется более логичным, да?) – EvgeniyZ Jan 29 '23 at 20:14
  • 1
  • 1
    Велосипед уже придуман :) https://ru.stackoverflow.com/a/1246708/373567 @EvgeniyZ кстати на заметку – aepot Jan 29 '23 at 22:24
  • Мне больше нравиться вариант @EvgeniyZ. Вариант aepot чем плох надо выделять целый класс(но идея не плохая). Тема с case guards интересная изучу спасибо Grundy. – Vladimir Jan 30 '23 at 09:33

1 Answers1

0
    private string GetFileSize()
    {
        LoadFileInfo();

        var length = _info.Length;
        string[] sizes = { "B", "KB", "MB", "GB", "TB" };
        var order = 0;

        while (length >= 1024 && order < sizes.Length - 1) 
        {
            order++;
            length /= 1024;
        }

        var result = $"{length:0.##} {sizes[order]}";

        return result;
    }
Vladimir
  • 403