Вопрос к любознательным гуру C#.
В книге CLR via C# есть неплохой пример расширения класса StringBuilder, цель автора воссоздать метод IndexOf, который есть у простого string.
public static class StringBuilderExtensions
{
public static Int32 IndexOf(this StringBuilder sb, char value)
{
for (int index = 0; index < sb.Length; index++)
if (sb[index] == value) return index;
return -1;
}
}
Взяв за основание этот пример, захотелось попробовать реализовать нечто подобное для класса Array.
Например для вывода в консоль содержащихся в массиве данных пробую сделать следующее:
public static class ArrayExtensions
{
public static String ToString(this int[] arr)
{
string str = "";
for(int i = 0; i < arr.Length-1; i++)
str += arr[i] + " ";
return str;
}
}
Только вот попытка вызвать неявный ToString(), вызывает стандартный GetType.ToString(). Как можно обойти это ограничение? Переопределить неявное преобразование?
Код вызова из программы:
int[] arr = new int[5]{23,24,66,33,7};
Console.WriteLine(arr);
При одинаковых именах встроенные (в класс или в его родителей) методы имеют приоритет перед методами расширения. Выход - используйте другое имя. Либо вызывайте его так: ArrayExtensions.ToString(arr);
(хотя смысла в этом мало)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возникла такая проблема: код запускается, но не считывает текстовый файл, тем более не создает новыйПодскажите как можно изменить
Имеется проект EF6 (code-First)В сущности File имеется свойство FullPath, содержащее полный путь к файлу в верхнем регистре
I have a datagrid and I want to save information , which was updated in datagrid