ReSharper говорит, что код «Эвристически недоступен», но не должен быть? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть простой метод утилиты, который принимает десятичное значение дюйма и возвращает дробь (т.е. превращает 1,5 в 1 1/2 ") для отображения. Это работает просто отлично, но Resharper говорит мне, что каждый случай в моем переключателе «Эвристически недоступен» и выдает предупреждение, я не могу понять, почему. Вот метод:

static string FractionalInches(double decimalInches)
{
    //Set initial variables
    string fraction = "";

    //Round to an integer for full inches
    int test = (int)Math.Round(decimalInches, 0);

    if (Math.Abs(decimalInches-test) < SharedData.FloatPointTolerance) //Even inches, no fractions here
    { return test.ToString(); }

    //Has a fraction
    var fullInches = decimalInches - test < 0 ? test - 1 : test;

    //get the fraction - rounded to 16ths.
    double sixteenths = Math.Abs(decimalInches - test) * 16;
    int sixt = (int)Math.Round(sixteenths, 0);

    switch (sixt)
    {
        case 1:
            fraction = "1/16";
            break;
        case 2:
            fraction = "1/8";
            break;
        case 3:
            fraction = "3/16";
            break;
        case 4:
            fraction = "1/4";
            break;
        case 5:
            fraction = "5/16";
            break;
        case 6:
            fraction = "3/8";
            break;
        case 7:
            fraction = "7/16";
            break;
        case 8:
            fraction = "1/2";
            break;
        case 9:
            fraction = "9/16";
            break;
        case 10:
            fraction = "5/8";
            break;
        case 11:
            fraction = "11/16";
            break;
        case 12:
            fraction = "3/4";
            break;
        case 13:
            fraction = "13/16";
            break;
        case 14:
            fraction = "7/8";
            break;
        case 15:
            fraction = "15/16";
            break;
        case 16:
            fraction = "";
            fullInches += 1;
            break;
    }

    //construct and return the final string
    return fraction == "" ? fullInches.ToString() : fullInches + " " + fraction;
}

Это дает мне недостижимое предупреждение в каждом случае в операторе switch, но я его знаю получает удар, потому что я могу отправить десятичные значения, и они возвращают правильные дроби ... Кто-нибудь знает, почему R # выдает это предупреждение? Я могу достаточно просто проигнорировать его, но не понимаю, зачем оно вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...