Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. Pointer in C#

Pointer in C#

Scheduled Pinned Locked Moved C#
questioncsharpc++
18 Posts 9 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Thomas Weller 0

    Wow. If you are quite new to C# this is very ambitious (to say the least). Good luck... Regards Thomas

    www.thomas-weller.de Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
    Programmer - an organism that turns coffee into software.

    H Offline
    H Offline
    Hamed Musavi
    wrote on last edited by
    #9

    It's about a year that I'm new to C#! I never encountered any serious problem unless I wanted something that no one thought of before in Microsoft Visual C# team. I have been coding in C++ for some years mostly in MFC. Now when making a new design I believe language is not much of a problem. This problem existed in MFC and now it exists in MS windows forms. I don't like using events for every task. I just decided to test some new ways of doing that. Most probably someone already did that. Maybe I have been too lazy not to search enough or a bit unlucky(I searched actually.)

    Thomas Weller wrote:

    Good luck...

    Thank you and thanks for the help. :)

    "In the end it's a little boy expressing himself."    Yanni

    modified on Wednesday, November 26, 2008 6:11 AM

    1 Reply Last reply
    0
    • realJSOPR realJSOP

      I think it's more accurate to say that everything in .Net is a pointer.

      "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
      -----
      "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001

      T Offline
      T Offline
      Thomas Weller 0
      wrote on last edited by
      #10

      Well, when you think of a pointer simply as a memory address, then of course you are right. But normally, when programmers say 'pointer', they refer to a concept like the one known from C/C++. And this simply does not exist in .NET (at least not in the safe part of it). (edited to correct a typo...) Regards Thomas

      www.thomas-weller.de Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
      Programmer - an organism that turns coffee into software.

      modified on Wednesday, November 26, 2008 5:54 AM

      1 Reply Last reply
      0
      • C Christian Graus

        You can access a pointer in C#, but you almost never need to. Any class is passed by reference, so you can have more than one reference to the one object, as you would with a pointer. An int is a value type, so this does not hold true. You could use int?, I assume that is a class, not a struct (structs are passed by value, not by reference ). The other thing you can do is use delegates to tell clients when a value changes, to get the same effect.

        Christian Graus Driven to the arms of OSX by Vista.

        H Offline
        H Offline
        HosamAly
        wrote on last edited by
        #11

        AFAIK, int? is equivalent to NotNullable, which is a struct.

        My LinkedIn Profile

        T 1 Reply Last reply
        0
        • H HosamAly

          AFAIK, int? is equivalent to NotNullable, which is a struct.

          My LinkedIn Profile

          T Offline
          T Offline
          Thomas Weller 0
          wrote on last edited by
          #12

          It's exactly the other way round. The int data type is a value type (i.e. a struct), which means that it is not nullable by design. int? is a syntactical enhancement that is equivalent to Nullable<int>. Regards Thomas

          www.thomas-weller.de Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
          Programmer - an organism that turns coffee into software.

          H 1 Reply Last reply
          0
          • T Thomas Weller 0

            It's exactly the other way round. The int data type is a value type (i.e. a struct), which means that it is not nullable by design. int? is a syntactical enhancement that is equivalent to Nullable<int>. Regards Thomas

            www.thomas-weller.de Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
            Programmer - an organism that turns coffee into software.

            H Offline
            H Offline
            HosamAly
            wrote on last edited by
            #13

            Sorry, I wrote the "Not" by mistake :-O. Nullable<int> is a struct.

            My LinkedIn Profile

            1 Reply Last reply
            0
            • H Hamed Musavi

              Hi, I want a class to have a pointer to a local variable of another class to change it later. In C++ I do it this way:

              class AClass
              {
              public:
              int *m_pInt;

              AClass(int\* pInt)
              {
                m\_pInt = pInt;
              };
              
              void SomeFunc()
              {
                \*m\_pInt = 20;
              };
              

              };

              class B
              {
              int x;
              AClass a(&x);
              };

              Is it possible to do this in C# using safe types? I'm still new to C#, so excuse me if this is a dumb question.

              "In the end it's a little boy expressing himself."    Yanni

              S Offline
              S Offline
              Shyam Bharath
              wrote on last edited by
              #14

              Pass by reference is supported in C# and VB.net. So I guess you can use that. Just search for their sample usage in MSDN

              ------------------------------------------- It's code that drives you - Shyam

              H 1 Reply Last reply
              0
              • S Shyam Bharath

                Pass by reference is supported in C# and VB.net. So I guess you can use that. Just search for their sample usage in MSDN

                ------------------------------------------- It's code that drives you - Shyam

                H Offline
                H Offline
                Hamed Musavi
                wrote on last edited by
                #15

                I know pass by reference. The problem was to hold the reference and change it's value later on. It looks like as I thought it's only possible by wrapping a struct type inside a class and sending reference to that class and using it to access the struct inside or sending a reference to current class that this struct is a member of which is another way of saying same statement. From kind help of others I conclude it this way: To store for later access to a state of another class, we need to have that class. If I was using my brain before asking the question, it was obvious. C# keeps track of references to objects. If someone uses internal data of an object without accessing a reference to that object how can garbage collector find out that it has to keep an object alive even if no one has any reference to that object. No reference = removing it and now a reference to a type inside an object that does not exists is what we ended up. That maybe why we must use class to access it's members. Also as stated earlier it's absolutely a bad design. Thanks for the help anyway.

                "In the end it's a little boy expressing himself."    Yanni

                1 Reply Last reply
                0
                • C Christian Graus

                  You can access a pointer in C#, but you almost never need to. Any class is passed by reference, so you can have more than one reference to the one object, as you would with a pointer. An int is a value type, so this does not hold true. You could use int?, I assume that is a class, not a struct (structs are passed by value, not by reference ). The other thing you can do is use delegates to tell clients when a value changes, to get the same effect.

                  Christian Graus Driven to the arms of OSX by Vista.

                  N Offline
                  N Offline
                  N a v a n e e t h
                  wrote on last edited by
                  #16

                  Christian Graus wrote:

                  I assume that is a class, not a struct

                  No. It is a struct[^]

                  Navaneeth How to use google | Ask smart questions

                  1 Reply Last reply
                  0
                  • realJSOPR realJSOP

                    I think it's more accurate to say that everything in .Net is a pointer.

                    "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
                    -----
                    "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001

                    A Offline
                    A Offline
                    Alan Balkany
                    wrote on last edited by
                    #17

                    I think that's only true for reference types. Values types (for example) have the actual values pushed onto the stack when passing them as parameters. I think they're handled identically to value types in C++.

                    1 Reply Last reply
                    0
                    • H Hamed Musavi

                      Hi, I want a class to have a pointer to a local variable of another class to change it later. In C++ I do it this way:

                      class AClass
                      {
                      public:
                      int *m_pInt;

                      AClass(int\* pInt)
                      {
                        m\_pInt = pInt;
                      };
                      
                      void SomeFunc()
                      {
                        \*m\_pInt = 20;
                      };
                      

                      };

                      class B
                      {
                      int x;
                      AClass a(&x);
                      };

                      Is it possible to do this in C# using safe types? I'm still new to C#, so excuse me if this is a dumb question.

                      "In the end it's a little boy expressing himself."    Yanni

                      A Offline
                      A Offline
                      Alan Balkany
                      wrote on last edited by
                      #18

                      Technically it is possible using boxing (http://www.csharphelp.com/archives/archive100.html[^]). You can use an object for your local variable, and assign any value type to it. If you pass this object as a parameter, its reference (address) is passed, so the called method can change the local variable of your class.

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups