Я передаю classobject (объект класса Cache) в качестве ссылки в конструкторе Myclass.
public class Test{
static void Main(string[] args){
Cache<string, string> cache;
Myclass obj = new MyClass(ref cache);
obj.doSomething();
Console.WriteLine(cache.key); // I want this value to get changed according to the doSomething Method
Console.WriteLine(cache.value);// I want this value to get changed according to the doSomething Method
}
}
Теперь в MyClass я хочу установить значение этого кеша
public class Myclass{
ref Cache<string, string> C;
Myclass(ref Cache<string, string> cache){
this.C = cache;
}
void doSomething(){
C.key = "key";
C.value = "value"
}
}
Я хочу, чтобы изменение значения кеша в Myclass отражалось в тестовом классе. Но я не уверен, как этого добиться. Любая помощь будет оценена по достоинству.
Вот полный сценарий, который я пытаюсь сделать. У нас нет нескольких организаций, и есть некоторые свойства организации, которые одинаковы для какой-то организации, и мы не хотим вычислять эти свойства снова и снова, поскольку это дорогостоящая операция. Эти свойства вычисляются в методе doSomethingMethod выше.
Мой кеш на самом деле представляет собой список. И эта переменная кеша будет передана в несколько организаций. Итак, в методе dosomething я хочу проверить, установлен ли кеш какой-либо другой организацией или нет, и если ключ присутствует, я не буду вычислять операцию, а просто вернусь из кеша.
ref
здесь вообще не требуется. Попробуйте не использовать его вообще. - person Damien_The_Unbeliever   schedule 27.01.2021Cache
, это не список, а похоже на словарь, а также образец, как запрошено в моем предыдущем комментарии. - person Olivier Rogier   schedule 27.01.2021ref
, то, что вы передаете ctor , является ссылкой на экземплярcache
. Ссылка сама будет копией, но по-прежнему будет ссылаться на тот же экземпляр. Если вы затем измените свойства указанного экземпляра, это будет отражаться во всех других ссылках на тот же самый экземпляр. - person Fildor   schedule 27.01.2021