Си диез / Говнокод #3489 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
void  makeGetSet(ref int delegate() get, ref void delegate(int)  set)
{    
    int _data = 0;
    
    get = {return _data;};
    set = (int Data){_data = Data;};
}

Запостил: Говногость Говногость, (Updated )

Комментарии (18) RSS

  • Это популярный в своих кругах паттерн. инфа 0,01%. pushkoff афтар?
    Ответить
  • "ref int delegate() get, ref void delegate(int) set"
    -это что ? О.о
    Ответить
    • там, наверное, typedef нужен. В C# это как-то через using делается.
      Ответить
  • >int _data = 0;
    Мне кажеться, что здесь не хватает static.
    Ответить
    • В шарпе низя использовать модификатор static внутри методов.
      Ответить
  • Должно быть, вроде:
    get = delegate {return _data;};
    set = delegate (int Data){_data = Data;};
    Ответить
    • вообще-то

      get {return _data;}
      set {_data = value;}

      Сабж - какая-то вымышленная хрень, в C# например запрещено ставить точкую с запятой после }, УЖЕ не скомпилируется. Вряд ли в 4.0 поменяли правила

      Не говоря уже о ref void delegate(int) set

      Андерс Хейльсберг перевернулся в гробу (он в нём спит)
      Ответить
      • Автор где-то в другом треде признался, что переписывал их по памяти, тк дома этого кода не было.
        А вообще должно использоваться как-то типа:
        Получение 2х делегатов, а потом использование, как установка или получение значения переменной _data.
        Ответить
        • Хотя кому это нужно? Непонятно... Я не знаю таких паттернов. Может какая-то отложеная инициализация, хотя это будет верно только для _data с типом не int. Хотя, может там действительно не int, а автор забыл что там было.
          Ответить
          • >Я не знаю таких паттернов.

            Тогда всё, раз гест не знает -- код нежизнеспособен.
            Ответить
  • void makeGetSet(ref Func<int> get, ref Action<int>  set)
            {    
                int _data = 0;
                
                get = ()=> {return _data;};
                set = (Data)=>{_data = Data;};
            }


    вот так работает!!
    Ответить
    • Даже так:
      [code lang=C#]
      void makeGetSet(ref Func<int> get, ref Action<int> set)
      {
      int _data = 0;

      get = delegate { return _data; };
      set = delegate(int Data) { _data = Data; };
      }
      [code]
      Ответить
      • Это зачем? Говнопост решили использовать в своём проекте? Ну удачи. О_о
        Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8