Передача объекта в метод

174
03 сентября 2018, 11:20

Вопрос из серии "данет" и "дубликат, гуглить не умеешь".

Мне нужно передавать объект по цепочке в несколько методов, при этом мне нужны только значения в объекте, сам объект менять не нужно.

Есть я напишу

void Q(MyClass myClass) {
    W(myClass);
}
void W(MyClass myClass) {
    E(myClass);
}
void E(MyClass myClass) {
    R(myClass);
}

то каждый раз будет создан новый объект? Нужно ли при передаче указывать ref?

Answer 1

Не особо относится к вопросу, но я хочу поделиться. Для выстраивания цепочек вызовов, вы можете объявить методы, которые принимают ваш объект и возвращают ваш объект. Например, у нас есть класс

public class MyObject { }

И есть методы

public MyObject A(MyObject obj) 
{
    return obj;
}
public MyObject B(MyObject obj)
{
    return obj;
}
public MyObject C(MyObject obj)
{
    return obj;
}

тогда цепочка может выглядеть так:

var obj = new MyObject();
C(B(A(obj)));

Ну, или, если методы можно сделать статическими, их можно оформить методами расширения, например

public static class Ext
{
    public static MyObject A(this MyObject obj)
    {
        return obj;
    }
    public static MyObject B(this MyObject obj)
    {
        return obj;
    }
    public static MyObject C(this MyObject obj)
    {
        return obj;
    }
}

Тогда та же самая цепочка будет

var obj = new MyObject();
obj.A().B().C();
READ ALSO
Подскажите из за чего может быть подобное?

Подскажите из за чего может быть подобное?

Пишу код с использованием Дженериков на C#Возник вопрос из за чего Visual Studio ругается на подобное выражение:

178
Запрет подключения библиотеки

Запрет подключения библиотеки

Работаю над проектом, в нем используется GuardantSDK

206
C# WPF ComboBox ToggleButton BorderThickness

C# WPF ComboBox ToggleButton BorderThickness

Как изменить BorderThickness для ComboBox ToggleButton?

179
Найти ошибку в коде

Найти ошибку в коде

Если навести мышь на кнопку, то кнопка становится на 50% прозрачнейТак вот, написал я значит код:

164