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. Boxing and UnBoxing in C#?

Boxing and UnBoxing in C#?

Scheduled Pinned Locked Moved C#
csharpquestion
14 Posts 7 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.
  • R ReenaSharma

    Converting value type into reference is Boxing, and vice-varsa is UnBoxing.

    E Offline
    E Offline
    Eslam Afifi
    wrote on last edited by
    #3

    let's say we have these 2 classes. Class B inherits from class A class A { } class B : A { } in the following code A obja; B objb = new B(); obja = objb; // boxing B objc = (B)obja; // unboxing We can say, Boxing is assigning an object of the child type to an object of the parent type (higher in the inheritance hierarchy) Unboxing is (casting) assigning an object of the parent type to an object of the child type. see also

    Eslam Afifi

    G C 2 Replies Last reply
    0
    • E Eslam Afifi

      let's say we have these 2 classes. Class B inherits from class A class A { } class B : A { } in the following code A obja; B objb = new B(); obja = objb; // boxing B objc = (B)obja; // unboxing We can say, Boxing is assigning an object of the child type to an object of the parent type (higher in the inheritance hierarchy) Unboxing is (casting) assigning an object of the parent type to an object of the child type. see also

      Eslam Afifi

      G Offline
      G Offline
      Guffa
      wrote on last edited by
      #4

      Eslam Afifi wrote:

      Boxing is assigning an object of the child type to an object of the parent type

      No, that's not correct. There is no boxing going on there.

      Despite everything, the person most likely to be fooling you next is yourself.

      E 1 Reply Last reply
      0
      • E Eslam Afifi

        let's say we have these 2 classes. Class B inherits from class A class A { } class B : A { } in the following code A obja; B objb = new B(); obja = objb; // boxing B objc = (B)obja; // unboxing We can say, Boxing is assigning an object of the child type to an object of the parent type (higher in the inheritance hierarchy) Unboxing is (casting) assigning an object of the parent type to an object of the child type. see also

        Eslam Afifi

        C Offline
        C Offline
        Colin Angus Mackay
        wrote on last edited by
        #5

        Eslam Afifi wrote:

        class A { } class B : A { } in the following code A obja; B objb = new B(); obja = objb; // boxing B objc = (B)obja; // unboxing

        Wrong! Boxing does not happen with instances of classes.

        Upcoming FREE developer events: * Developer Day Scotland Recent blog posts: * Different ways to add point data in SQL Server 2008 * Spatial References in SQL Server 2008 My website |

        E 1 Reply Last reply
        0
        • G Guffa

          Eslam Afifi wrote:

          Boxing is assigning an object of the child type to an object of the parent type

          No, that's not correct. There is no boxing going on there.

          Despite everything, the person most likely to be fooling you next is yourself.

          E Offline
          E Offline
          Eslam Afifi
          wrote on last edited by
          #6

          Maybe I'm wrong, but this is how I understand it, and I'll be grateful if you clarify this point to me, please.

          B objc = (B)obja;
          

          Isn't that unboxing?

          Eslam Afifi

          G P 2 Replies Last reply
          0
          • C Colin Angus Mackay

            Eslam Afifi wrote:

            class A { } class B : A { } in the following code A obja; B objb = new B(); obja = objb; // boxing B objc = (B)obja; // unboxing

            Wrong! Boxing does not happen with instances of classes.

            Upcoming FREE developer events: * Developer Day Scotland Recent blog posts: * Different ways to add point data in SQL Server 2008 * Spatial References in SQL Server 2008 My website |

            E Offline
            E Offline
            Eslam Afifi
            wrote on last edited by
            #7

            http://www.codeproject.com/script/Forums/View.aspx?fid=1649&msg=2433376

            Eslam Afifi

            1 Reply Last reply
            0
            • E Eslam Afifi

              Maybe I'm wrong, but this is how I understand it, and I'll be grateful if you clarify this point to me, please.

              B objc = (B)obja;
              

              Isn't that unboxing?

              Eslam Afifi

              G Offline
              G Offline
              Guffa
              wrote on last edited by
              #8

              No, that's not unboxing. Unboxing is when you extract the value from a value type that is stored as an object. What you are doing is merely changing the type of a reference.

              Despite everything, the person most likely to be fooling you next is yourself.

              E 1 Reply Last reply
              0
              • R ReenaSharma

                Converting value type into reference is Boxing, and vice-varsa is UnBoxing.

                E Offline
                E Offline
                Erich Ledesma
                wrote on last edited by
                #9

                Boxing is copying a value type (C# struct) to a reference object in the heap. Unboxing is copying a boxed object in the heap back to the stack. Not just primitive value types: struct S : ISomeInterface { ... } // boxing S s1 = new S() ; object x = s1 ; // S instance is created on the stack, then copied to the heap. ISomeInterface is = s1 ; // This is also boxing ... S s = (S)x ; // This is unboxing, for unboxing you must use the cast syntax. Value types are not always placed on the stack, they are inline into it's container. They might be already on the heap, for instance if they are array elements. S[] a = ... a[i] = (S)x ; Boxed value is copied from the heap to the stack and then copied into a[i].

                1 Reply Last reply
                0
                • E Eslam Afifi

                  Maybe I'm wrong, but this is how I understand it, and I'll be grateful if you clarify this point to me, please.

                  B objc = (B)obja;
                  

                  Isn't that unboxing?

                  Eslam Afifi

                  P Offline
                  P Offline
                  Pete OHanlon
                  wrote on last edited by
                  #10

                  Have a look at this[^] entry in wikipedia.

                  Deja View - the feeling that you've seen this post before.

                  My blog | My articles

                  E 1 Reply Last reply
                  0
                  • G Guffa

                    No, that's not unboxing. Unboxing is when you extract the value from a value type that is stored as an object. What you are doing is merely changing the type of a reference.

                    Despite everything, the person most likely to be fooling you next is yourself.

                    E Offline
                    E Offline
                    Eslam Afifi
                    wrote on last edited by
                    #11

                    Thank you. Now I get it. But I have one question. Does this reference conversion consume much time as unboxing?

                    Eslam Afifi

                    G 1 Reply Last reply
                    0
                    • P Pete OHanlon

                      Have a look at this[^] entry in wikipedia.

                      Deja View - the feeling that you've seen this post before.

                      My blog | My articles

                      E Offline
                      E Offline
                      Eslam Afifi
                      wrote on last edited by
                      #12

                      Thanks a lot. Please have a look at this question.http://www.codeproject.com/script/Forums/View.aspx?fid=1649&msg=2434188

                      Eslam Afifi

                      1 Reply Last reply
                      0
                      • E Eslam Afifi

                        Thank you. Now I get it. But I have one question. Does this reference conversion consume much time as unboxing?

                        Eslam Afifi

                        G Offline
                        G Offline
                        Guffa
                        wrote on last edited by
                        #13

                        Eslam Afifi wrote:

                        Does this reference conversion consume much time as unboxing?

                        No. Reference conversion doesn't create a new object, it only verifies that the object can be used as the desired type and then copies the reference. If you convert from one known class to another, the verification can be done by the compiler, so the only thing that is done at runtime is copying the reference.

                        Despite everything, the person most likely to be fooling you next is yourself.

                        E 1 Reply Last reply
                        0
                        • G Guffa

                          Eslam Afifi wrote:

                          Does this reference conversion consume much time as unboxing?

                          No. Reference conversion doesn't create a new object, it only verifies that the object can be used as the desired type and then copies the reference. If you convert from one known class to another, the verification can be done by the compiler, so the only thing that is done at runtime is copying the reference.

                          Despite everything, the person most likely to be fooling you next is yourself.

                          E Offline
                          E Offline
                          Eslam Afifi
                          wrote on last edited by
                          #14

                          Ok. Thank you so much.

                          Eslam Afifi

                          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