Ну очень глупый вопрос наверное :(
Распихал логику по методам, мне удобнее когда каждая функция свое выполняет.
И приходится постоянно делать так
myclass.doing1(new myclass().doing2(new myclass().doing3()))
this так не работает, без создания экземпляра класса они тоже не работают. Как в шарпе это делают?
Почерпнул новой инфы, большое спасибо!
Если вам надо, чтобы функции работали без создания экземпляра, сделайте их статическими. Пример:
public static class Mathf {
public static float Sqrt (float x) {...}
public static float Sin (float x) {...}
public static float Cos (float x) {...}
}
И вызывайте через точку после имени класса: x = Mathf.Sqrt (Mathf.Cos (x));
А если используете using static в начале файла, то и имя класса будет необязательным.
Теперь немного поясню про экземпляры и this. ООП придумали, грубо говоря, чтобы упростить работу с наборами данных при помощи наборов функций, объединили данные и функции в одно целое и назвали класс.
Когда вы создаете экземпляр класса, вы создаете набор переменных, которые в нем есть, только в ООП они называются полями. Конструктор инициализирует их согласно логике класса. Поэтому, если вам не нужно работать с полями, то можно избежать работы с ними в конструкторе, если метод будет статическим.
Внутри нестатических методов вы можете использовать слово this. Это ссылка на экземпляр, у которого вызвали метод. Если вы пишете myClass.f1() то метод f1 может обращаться к нестатическим полям и методам экземпляра myClass: this.f2() или просто f2().
Статические методы вызываются без экземпляра, поэтому там вы не сможете использовать this, хоть явно, хоть неявно.
MyClass myclass = new MyClass();
myclass.doing1( myclass.doing2( myclass.doing3() ) );
или
public class MyClass
{
...
public void DoIt() {
doing1( doing2( doing3() ) );
}
}
MyClass myclass = new MyClass();
myclass.DoIt();
Продвижение своими сайтами как стратегия роста и независимости