Здравствуйте, товарищи. Задание - создать класс таблицы и записать значение в ячейку в виде
var table = new Table<int, string, double>();
table.Open[1, "2"] = 3;
То есть (как я понял) есть некоторое поле которому мы в скобках передаём координаты (строка, столбец) и записываем туда значение.
Не знаю как это сделать перепробовал много вариантов. Посоветовали сделать Open
полем класса, который гэттером возвращает экземпляр другого класса у которого перегружены индексаторы, но я пробовал не получалось. Как говорится, будьте так добры, помогите кто чем может.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
public class Table<ROW, COL, CELL>
{
public Dictionary<KeyValuePair<int, string>, double> Open;
public Table()
{
Open = new Dictionary<KeyValuePair<int, string>, double>();
}
}
class Program
{
static void Main(string[] args)
{
var table = new Table<int, string, double>();
table.Open[1, "2"] = 3; /*Ошибка 'No overload for method 'this'
takes 2 arguments' Подчеркнуто
красным. */
}
}
}
Имхо, задание мне непонятно, но я покажу пример такого индексатора (Руководство).
Создадим класс, добавим в него индексатор и свойство Open (это свойство я добавил только, чтобы можно было вызвать синтаксис из задания)
public class Table<I, J, K>
{
private Dictionary<I, Dictionary<J, K>> _dict = new Dictionary<I, Dictionary<J, K>>();
public Table<I, J, K> Open
{
get { return this; }
}
public K this[I arg1, J arg2]
{
get { return _dict[arg1][arg2]; }
set
{
if (!_dict.ContainsKey(arg1))
_dict.Add(arg1, new Dictionary<J, K>());
_dict[arg1][arg2] = value;
}
}
}
Использование
var table = new Table<int, string, int>();
table.Open[1, "2"] = 3;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу понять, где у меня ошибка с привязкой элементов к ComboBox
как запретить запуск новых копий приложения? если оно уже запущено то фокус на окно или развернуть
Есть задание, в котором необходимо написать Интернет магазин с использованием технологии ASPNET MVC
Пользователи обращаются на сайтКонтроллеры используют async/await