• mozingo@lemmy.world
    link
    fedilink
    English
    arrow-up
    39
    arrow-down
    1
    ·
    1 year ago

    This sure looks like C#. I use typeof every once in a while when I want to check that the type of a reference is a specific type and not a parent or derived type. But yea, really not that often.

          • sgh@lemmy.ml
            link
            fedilink
            arrow-up
            3
            ·
            edit-2
            1 year ago

            Standard C does not have typeof. That’s just a compiler extension…

            Also the equivalent of typeof is most likely decltype or auto.

      • FooBarrington@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        Typescript! Though it’s less useful, since the Typescript types aren’t available at runtime, so you’ll just get object for non-primitive values.

      • LapidistCubed@lemmy.world
        link
        fedilink
        arrow-up
        2
        arrow-down
        1
        ·
        1 year ago

        Probably because Java and C# take much inspiration from C++. They aren’t called “C-based” languages for nothing 😉

    • r00ty@kbin.life
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Yeah in C# it has quite a few uses.

      I’m working on a background fun project where there’s a base class that is for olde style CPU emulation. Where you can derive a class from the base class and essentially design 8bit style CPUs.

      I have a separate class as a generic Assembler that will work with any of the created CPUs. But, to be able to do that I need to be able to get information about instructions, arguments, opcodes, registers etc from the derived class.

      So the assembler is instantiated with Assembler\ and then it uses typeof to instantiate the actual CPU class being used to get all the information.

      So, that’s just an example of when you’d use something like this.

    • m_r_butts@kbin.social
      link
      fedilink
      arrow-up
      3
      arrow-down
      1
      ·
      edit-2
      1 year ago

      It can’t be actual C#, but it does look like it.

      If you declare a class Pie{} then attempt to call typeof(Pie) or typeof(T) it won’t even build because you failed to specify what type T is. typeof(Pie) would work but that just returns “Pie1[System.Object]”.

      • tonur@feddit.dk
        link
        fedilink
        English
        arrow-up
        5
        ·
        1 year ago

        I have used typeof(T) inside the generic class, so fx a function inside the class Pie where T can be refered. But out of context, if you were to call typeof(T) inside Program.cs’s main function, it would not work.

        • m_r_butts@kbin.social
          link
          fedilink
          arrow-up
          3
          ·
          1 year ago

          Yeah, but to do that you’d need an instantiated instance of the Pie class, which would answer in the context of the generic type parameter, not the whole Pie class.

          This is too funny. Everyone here, me included, is profoundly overthinking this, lol.

      • Kogasa@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago

        I don’t get what you mean. You can define class Pie and instantiate it with the type argument Pie.

        Huh, maybe I don’t get it because Lemmy is literally erasing angle brackets from our messages. Not just “not rendering.” It’s removing them entirely. There should be four angle brackets in the first line of this comment…