Вероятно, самая большая проблема выделения "кучи" по сравнению с выделением стека, то, что выделение "кучи" в общем случае является неограниченной операцией, и таким образом Вы не можете использовать его, где синхронизация является проблемой.
Для других приложений, где синхронизация не является проблемой, она не может иметь значения так же, но если Вы помещаете в "кучу", выделяют много, это будет влиять на скорость выполнения. Всегда пытайтесь использовать стек, если коротко, жил и часто выделял память (например, в циклах), и максимально долго - действительно помещают выделение в "кучу" во время запуска приложения.
Нет, в C # нет двоичных литералов. Конечно, вы можете проанализировать строку в двоичном формате с помощью Convert.ToInt32, но я не думаю, что это было бы отличным решением.
int bin = Convert.ToInt32( "1010", 2 );
Вы могли бы использовать метод расширения:
public static int ToBinary(this string binary)
{
return Convert.ToInt32( binary, 2 );
}
Однако, насколько это разумно, я оставлю на ваше усмотрение (учитывая тот факт, что он будет работать с любой строкой) .