В чём разница между Convert.ToString(), ToString() и (String)?
Функция ToString() (вы забыли скобки) — это не приведение типов, это просто функция, которая для числа даёт его строковое представление.
Функция Convert.ToString(int) — это тоже не приведение типов, а функция, которая для числа даёт его строковое представление.
Обе функции ToString() и Convert.ToString() выдают строковое представление в текущей локали, так что различий быть не должно.
Приведение типов в ваших примерах лишь одно:
String c = (String)temp;
Это приведение типов не будет работать, т. к. temp имеет реальный тип int , а не string . Это даже не скомпилируется, т. к. компилятор видит, что число типа int никаким образом не может быть строкой. Приведение типов не меняет сам объект, оно просто меняет тип ссылки на настоящий тип объекта или какой-то из его базовых типов. (Вы ведь понимаете, что число 123 — это совсем не то же самое, что строка из трёх символов ‘1’, ‘2’ и ‘3’?)
Уголок зануды пуриста.
Вызовы 5.ToString() и Convert.ToString(5) , согласно sourceof.net, являются вызовами
Number.FormatInt32(5, null, NumberFormatInfo.GetInstance(Thread.CurrentThread.CurrentCulture))
Number.FormatInt32(i, null, NumberFormatInfo.CurrentInfo)
внутреннего класса Number соответственно. Могут ли NumberFormatInfo.GetInstance(Thread.CurrentThread.CurrentCulture) и NumberFormatInfo.CurrentInfo не совпадать?
Код NumberFormatInfo.GetInstance для нашего случая можно упростить до следующего:
if (!cultureInfo.m_isInherited) return cultureInfo.numInfo ?? cultureInfo.NumberFormat; return cultureInfo.GetFormat(typeof(NumberFormatInfo)) as NumberFormatInfo ?? CurrentInfo;
А код NumberFormatInfo.CurrentInfo — до
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; if (!cultureInfo.m_isInherited && cultureInfo.numInfo != null) return cultureInfo.numInfo; return ((NumberFormatInfo)cultureInfo.GetFormat(typeof(NumberFormatInfo)));
В случае, когда cultureInfo.m_isInherited == false (то есть, у нас CultureInfo , а не производный от него тип), у нас cultureInfo.GetFormat(typeof(NumberFormatInfo)) возвращает NumberFormat , так что различий нет.
В случае же, когда у нас не CultureInfo , а производный от него тип, у нас код упрощается до
cultureInfo.GetFormat(typeof(NumberFormatInfo)) as NumberFormatInfo ?? CurrentInfo;
((NumberFormatInfo)cultureInfo.GetFormat(typeof(NumberFormatInfo)));
Разный результат может быть лишь в случае, если переопределённая виртуальная функция GetFormat сошла с ума, и возвращает разные типы при разных вызовах.
class WeirdCultureInfo : CultureInfo < public WeirdCultureInfo() : base("en-US") < >bool flag = false; public override object GetFormat(Type formatType) < object result = flag ? (object)DateTimeFormat : NumberFormat; flag = true; return result; >>
Convert c что это
Все примитивные типы имеют два метода, которые позволяют преобразовать строку к данному типу. Это методы Parse() и TryParse() .
Метод Parse() в качестве параметра принимает строку и возвращает объект текущего типа. Например:
int a = int.Parse("10"); double b = double.Parse("23,56"); decimal c = decimal.Parse("12,45"); byte d = byte.Parse("4"); Console.WriteLine($"a= b= c= d=");
Стоит отметить, что парсинг дробных чисел зависит от настроек текущей культуры. В частности, для получения числа double я передаю строку «23,56» с запятой в качестве разделителя. Если бы я передал точку вместо запятой, то приложение выдало ошибку выполнения. На компьютерах с другой локалью, наоборот, использование запятой вместо точки выдало бы ошибку.
Чтобы не зависеть от культурных различий мы можем установить четкий формат с помощью класса NumberFormatInfo и его свойства NumberDecimalSeparator :
using System.Globalization; IFormatProvider formatter = new NumberFormatInfo < NumberDecimalSeparator = "." >; double number = double.Parse("23.56", formatter); Console.WriteLine(number); // 23,56
В данном случае в качестве разделителя устанавливается точка. Однако тем не менее потенциально при использовании метода Parse мы можем столкнуться с ошибкой, например, при передачи алфавитных символов вместо числовых. И в этом случае более удачным выбором будет применение метода TryParse() . Он пытается преобразовать строку к типу и, если преобразование прошло успешно, то возвращает true . Иначе возвращается false:
Console.WriteLine("Введите строку:"); string? input = Console.ReadLine(); bool result = int.TryParse(input, out var number); if (result == true) Console.WriteLine($"Преобразование прошло успешно. Число: "); else Console.WriteLine("Преобразование завершилось неудачно");
Если преобразование пройдет неудачно, то исключения никакого не будет выброшено, просто метод TryParse возвратит false, а переменная number будет содержать значение по умолчанию.
Convert
Класс Convert представляет еще один способ для преобразования значений. Для этого в нем определены следующие статические методы:
- ToBoolean(value)
- ToByte(value)
- ToChar(value)
- ToDateTime(value)
- ToDecimal(value)
- ToDouble(value)
- ToInt16(value)
- ToInt32(value)
- ToInt64(value)
- ToSByte(value)
- ToSingle(value)
- ToUInt16(value)
- ToUInt32(value)
- ToUInt64(value)
В качестве параметра в эти методы может передаваться значение различных примитивных типов, необязательно строки:
int n = Convert.ToInt32("23"); bool b = true; double d = Convert.ToDouble(b); Console.WriteLine($"n= d=");
Однако опять же, как и в случае с методом Parse, если методу не удастся преобразовать значение к нужному типу, то он выбрасывает исключение FormatException.
convert — конвертируем много файлов сразу

Проще в Thunar в «Особых действиях» добавить типа — convert %F -quality 75 %f.jpg
И всё.
amorpher ★★★★★
( 28.01.12 04:12:07 MSK )
не работает
$ ls *.png 1 2.png $ sh test.sh convert: unable to open image `1.png': Нет такого файла или каталога @ error/blob.c/OpenBlob/2589. convert: unable to open file `1.png' @ error/png.c/ReadPNGImage/3639. convert: missing an image filename `1.jpg' @ error/convert.c/ConvertImageCommand/3016. convert: unable to open image `2.png': Нет такого файла или каталога @ error/blob.c/OpenBlob/2589. convert: unable to open file `2.png' @ error/png.c/ReadPNGImage/3639. convert: missing an image filename `2.jpg' @ error/convert.c/ConvertImageCommand/3016.
anonymous
( 28.01.12 04:13:28 MSK )
зачем это здесь?
demidrol ★★★★★
( 28.01.12 04:16:13 MSK )
Ответ на: комментарий от demidrol 28.01.12 04:16:13 MSK
anonymous
( 28.01.12 09:47:54 MSK )

Гениально!
Автор достоин 5 звёзд, Хрустальной Совы и малинового пиджака, как лучший знаток клуба, я щитаю
zolden ★★★★★
( 28.01.12 10:10:04 MSK )

Ты, наверное, расстроишься, что твой скрипт не нужен, но в том же пакете imagemagick’a есть еще одна утилита:
mogrify -format jpg *.png
Ман, думаю, осилишь прочитать сам
Что такое Convert в C#?
В языке программирования C#, класс Convert предоставляет удобные методы для преобразования значений между различными типами данных. Это особенно полезно, когда требуется преобразование между примитивными типами данных, такими как строки, числа и даты.
Синтаксис:
// Пример использования Convert для преобразования строки в число string strNumber = "123"; int convertedNumber = Convert.ToInt32(strNumber); // Пример использования Convert для преобразования числа в строку int number = 456; string convertedString = Convert.ToString(number);