Объясните мне это выражение Python в C # - PullRequest
1 голос
/ 25 августа 2011

Что такое эквивалент C # этого выражения python?

file_no = int (last_file.Name.Replace(last_file.Extension,"")[-3:]);

Я понимаю, что делает [-3:], но не (int) приведение.

Ответы [ 5 ]

5 голосов
/ 25 августа 2011

Он заменяет расширение имени файла пустой строкой, принимает в качестве строки последние три символа и пытается преобразовать их в целое число.

То есть, если last_file равно jamesbond007.secretagent и last_file.Extension равно .secretagent, то file_no становится 7, поскольку .secretagent заменяется пустой строкой, а последние три символа 007, что разбирается на 7.

int file_no = 
    Int32.Parse(
        last_file.Name.Replace(
            last_file.Extension, String.Empty
        )
        .Right(3)
    );
4 голосов
/ 25 августа 2011

Передача значения в конструктор int попытается превратить его в int (или long, если оно слишком большое).Подумайте Convert.ToInt32().

2 голосов
/ 25 августа 2011

Я не могу сказать вам ответ в C #, но я могу объяснить, что делает это выражение: оно берет расширение из имени файла, а затем последние 3 символа и пытается преобразовать их в int.

Например measure009.bin -> measure009 -> 009 -> 9.

1 голос
/ 25 августа 2011

Поскольку вы говорите «приведение типа int», я предполагаю, что вы уже знаете, что значение преобразуется в значение типа int. Причина в том, что перед приведением значения это строковое представление типа int, и python не позволит вам использовать 'string int' в качестве int.

о, и это питон; вам не нужно быть одержимым ';' окончание строк больше; P

0 голосов
/ 25 августа 2011

Это не совсем актерский состав. int преобразует аргумент в целое число, поэтому наиболее близким выражением C # будет int.Parse(...) или вызов с использованием преобразователя.

...