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. The Lounge
  3. You've either had too much or not enough coffee when...

You've either had too much or not enough coffee when...

Scheduled Pinned Locked Moved The Lounge
comquestion
37 Posts 25 Posters 4 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.
  • C Offline
    C Offline
    Chris Maunder
    wrote on last edited by
    #1

    public class MyObject
    {
    public Value1 { get; set; }
    public Value2 { get; set; }
    public Value3 { get; set; }

    /// /// Initializes a new instance of the class.
    /// 
    /// The first value.
    /// The second value.
    /// The third value.
    public MyObject(int value1, int value2, int value3)
    {
        Value1 = value1;  
        Value2 = value2;
        Value3 = Value3;
    }
    

    }

    var value = new MyObject(1,2,3);

    Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

    cheers Chris Maunder

    E K realJSOPR raddevusR L 20 Replies Last reply
    0
    • C Chris Maunder

      public class MyObject
      {
      public Value1 { get; set; }
      public Value2 { get; set; }
      public Value3 { get; set; }

      /// /// Initializes a new instance of the class.
      /// 
      /// The first value.
      /// The second value.
      /// The third value.
      public MyObject(int value1, int value2, int value3)
      {
          Value1 = value1;  
          Value2 = value2;
          Value3 = Value3;
      }
      

      }

      var value = new MyObject(1,2,3);

      Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

      cheers Chris Maunder

      E Offline
      E Offline
      Eric Lynch
      wrote on last edited by
      #2

      It has a few humorous properties? :) That said, I'm surprised there were no compiler errors. UPDATE: I was focused on the missing types on your properties (cut/paste error in posting?). I think it would be a "capital" idea if you fixed those...then, the other issue might be more apparent :)

      S raddevusR 2 Replies Last reply
      0
      • E Eric Lynch

        It has a few humorous properties? :) That said, I'm surprised there were no compiler errors. UPDATE: I was focused on the missing types on your properties (cut/paste error in posting?). I think it would be a "capital" idea if you fixed those...then, the other issue might be more apparent :)

        S Offline
        S Offline
        Slacker007
        wrote on last edited by
        #3

        The code presented is perfectly acceptable to the compiler. Resharper will notify you that input parameter value3 is not being used, which I would then have noticed that. I don't know if the latest version of VS2017 shows that too, I think it does. Also, I think the unused input parameter may also show up as a compiler warning, but could be wrong there, depending on a person's settings, etc.

        E 1 Reply Last reply
        0
        • C Chris Maunder

          public class MyObject
          {
          public Value1 { get; set; }
          public Value2 { get; set; }
          public Value3 { get; set; }

          /// /// Initializes a new instance of the class.
          /// 
          /// The first value.
          /// The second value.
          /// The third value.
          public MyObject(int value1, int value2, int value3)
          {
              Value1 = value1;  
              Value2 = value2;
              Value3 = Value3;
          }
          

          }

          var value = new MyObject(1,2,3);

          Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

          cheers Chris Maunder

          K Offline
          K Offline
          Kschuler
          wrote on last edited by
          #4

          Ugh. Uppercase vs Lowercase errors always drive me crazy!!!

          raddevusR 1 Reply Last reply
          0
          • E Eric Lynch

            It has a few humorous properties? :) That said, I'm surprised there were no compiler errors. UPDATE: I was focused on the missing types on your properties (cut/paste error in posting?). I think it would be a "capital" idea if you fixed those...then, the other issue might be more apparent :)

            raddevusR Offline
            raddevusR Offline
            raddevus
            wrote on last edited by
            #5

            Eric Lynch wrote:

            I'm surprised there were no compiler errors.

            It is always interesting to me that C# doesn't produce a compiler error for that. But, I guess it figures you know best. :rolleyes: Maybe there's a warning, but we all ignore warnings. :laugh:

            E OriginalGriffO K 3 Replies Last reply
            0
            • S Slacker007

              The code presented is perfectly acceptable to the compiler. Resharper will notify you that input parameter value3 is not being used, which I would then have noticed that. I don't know if the latest version of VS2017 shows that too, I think it does. Also, I think the unused input parameter may also show up as a compiler warning, but could be wrong there, depending on a person's settings, etc.

              E Offline
              E Offline
              Eric Lynch
              wrote on last edited by
              #6

              I was talking about the missing types on the property declarations. Just updated before I read your reply.

              1 Reply Last reply
              0
              • K Kschuler

                Ugh. Uppercase vs Lowercase errors always drive me crazy!!!

                raddevusR Offline
                raddevusR Offline
                raddevus
                wrote on last edited by
                #7

                That's why I only write programs in BASIC and Pascal. Well, sometimes I get modren and use FORTRAN. :laugh:

                1 Reply Last reply
                0
                • C Chris Maunder

                  public class MyObject
                  {
                  public Value1 { get; set; }
                  public Value2 { get; set; }
                  public Value3 { get; set; }

                  /// /// Initializes a new instance of the class.
                  /// 
                  /// The first value.
                  /// The second value.
                  /// The third value.
                  public MyObject(int value1, int value2, int value3)
                  {
                      Value1 = value1;  
                      Value2 = value2;
                      Value3 = Value3;
                  }
                  

                  }

                  var value = new MyObject(1,2,3);

                  Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

                  cheers Chris Maunder

                  realJSOPR Offline
                  realJSOPR Offline
                  realJSOP
                  wrote on last edited by
                  #8

                  you misspelled value3.

                  ".45 ACP - because shooting twice is just silly" - JSOP, 2010
                  -----
                  You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
                  -----
                  When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013

                  S 1 Reply Last reply
                  0
                  • raddevusR raddevus

                    Eric Lynch wrote:

                    I'm surprised there were no compiler errors.

                    It is always interesting to me that C# doesn't produce a compiler error for that. But, I guess it figures you know best. :rolleyes: Maybe there's a warning, but we all ignore warnings. :laugh:

                    E Offline
                    E Offline
                    Eric Lynch
                    wrote on last edited by
                    #9

                    I think it does issue a warning when you assign something to itself...at least I recall seeing one. I was more focused on the missing types in the property declarations.

                    1 Reply Last reply
                    0
                    • C Chris Maunder

                      public class MyObject
                      {
                      public Value1 { get; set; }
                      public Value2 { get; set; }
                      public Value3 { get; set; }

                      /// /// Initializes a new instance of the class.
                      /// 
                      /// The first value.
                      /// The second value.
                      /// The third value.
                      public MyObject(int value1, int value2, int value3)
                      {
                          Value1 = value1;  
                          Value2 = value2;
                          Value3 = Value3;
                      }
                      

                      }

                      var value = new MyObject(1,2,3);

                      Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

                      cheers Chris Maunder

                      raddevusR Offline
                      raddevusR Offline
                      raddevus
                      wrote on last edited by
                      #10

                      My vote is NOT ENOUGH coffee. :laugh:

                      1 Reply Last reply
                      0
                      • realJSOPR realJSOP

                        you misspelled value3.

                        ".45 ACP - because shooting twice is just silly" - JSOP, 2010
                        -----
                        You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
                        -----
                        When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013

                        S Offline
                        S Offline
                        Slacker007
                        wrote on last edited by
                        #11

                        You forgot to capitalize the first letter of your sentence.

                        realJSOPR 1 Reply Last reply
                        0
                        • raddevusR raddevus

                          Eric Lynch wrote:

                          I'm surprised there were no compiler errors.

                          It is always interesting to me that C# doesn't produce a compiler error for that. But, I guess it figures you know best. :rolleyes: Maybe there's a warning, but we all ignore warnings. :laugh:

                          OriginalGriffO Offline
                          OriginalGriffO Offline
                          OriginalGriff
                          wrote on last edited by
                          #12

                          There is no warning, which surprised me - and I have "treat warnings as errors" set by default ...

                          Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                          "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                          "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                          E H 2 Replies Last reply
                          0
                          • C Chris Maunder

                            public class MyObject
                            {
                            public Value1 { get; set; }
                            public Value2 { get; set; }
                            public Value3 { get; set; }

                            /// /// Initializes a new instance of the class.
                            /// 
                            /// The first value.
                            /// The second value.
                            /// The third value.
                            public MyObject(int value1, int value2, int value3)
                            {
                                Value1 = value1;  
                                Value2 = value2;
                                Value3 = Value3;
                            }
                            

                            }

                            var value = new MyObject(1,2,3);

                            Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

                            cheers Chris Maunder

                            L Offline
                            L Offline
                            Lost User
                            wrote on last edited by
                            #13

                            In c++ you will get at least a warning "Parameter value3" not used :-\ :-D

                            It does not solve my Problem, but it answers my question

                            1 Reply Last reply
                            0
                            • OriginalGriffO OriginalGriff

                              There is no warning, which surprised me - and I have "treat warnings as errors" set by default ...

                              Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                              E Offline
                              E Offline
                              Eric Lynch
                              wrote on last edited by
                              #14

                              There (sort of) is a warning for self-assignment. If you assign

                              value3 = value3

                              you do get a warning. If you assign

                              Value3 = Value3

                              you do not get a warning. Strange, the warning must only be for self-assignment of variables, but not properties?

                              OriginalGriffO 1 Reply Last reply
                              0
                              • E Eric Lynch

                                There (sort of) is a warning for self-assignment. If you assign

                                value3 = value3

                                you do get a warning. If you assign

                                Value3 = Value3

                                you do not get a warning. Strange, the warning must only be for self-assignment of variables, but not properties?

                                OriginalGriffO Offline
                                OriginalGriffO Offline
                                OriginalGriff
                                wrote on last edited by
                                #15

                                Not that strange: properties are syntactic sugar for getter and setter methods, so what you are actually doing is:

                                Value3 = Value3;

                                Value3_setter(Value3_getter());

                                But the compiler should have spotted it:: lazy programmers strike again ... :laugh:

                                Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                                "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                                "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                                E 1 Reply Last reply
                                0
                                • OriginalGriffO OriginalGriff

                                  Not that strange: properties are syntactic sugar for getter and setter methods, so what you are actually doing is:

                                  Value3 = Value3;

                                  Value3_setter(Value3_getter());

                                  But the compiler should have spotted it:: lazy programmers strike again ... :laugh:

                                  Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                                  E Offline
                                  E Offline
                                  Eric Lynch
                                  wrote on last edited by
                                  #16

                                  Yeah, in their defense, I guess there are cases where that "self-assignment" might actually have "desired" side effects (such as modifying some other local variable). Though, I'd still like it if the compiler kicked out a low level warning...mostly, because I'm bound to make that mistake myself sometime :(

                                  1 Reply Last reply
                                  0
                                  • S Slacker007

                                    You forgot to capitalize the first letter of your sentence.

                                    realJSOPR Offline
                                    realJSOPR Offline
                                    realJSOP
                                    wrote on last edited by
                                    #17

                                    that's okay, because my sentence is not part of any widely recognized API...

                                    ".45 ACP - because shooting twice is just silly" - JSOP, 2010
                                    -----
                                    You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
                                    -----
                                    When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013

                                    G 1 Reply Last reply
                                    0
                                    • C Chris Maunder

                                      public class MyObject
                                      {
                                      public Value1 { get; set; }
                                      public Value2 { get; set; }
                                      public Value3 { get; set; }

                                      /// /// Initializes a new instance of the class.
                                      /// 
                                      /// The first value.
                                      /// The second value.
                                      /// The third value.
                                      public MyObject(int value1, int value2, int value3)
                                      {
                                          Value1 = value1;  
                                          Value2 = value2;
                                          Value3 = Value3;
                                      }
                                      

                                      }

                                      var value = new MyObject(1,2,3);

                                      Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

                                      cheers Chris Maunder

                                      D Offline
                                      D Offline
                                      DRHuff
                                      wrote on last edited by
                                      #18

                                      Chris Maunder wrote:

                                      Why is MyObject.Value3 always equal to 0?

                                      Because your code is doing what you told it to do - not what you want it to do? (That is usually my problem with my code!)

                                      Socialism is the Axe Body Spray of political ideologies: It never does what it claims to do, but people too young to know better keep buying it anyway. (Glenn Reynolds)

                                      K 1 Reply Last reply
                                      0
                                      • C Chris Maunder

                                        public class MyObject
                                        {
                                        public Value1 { get; set; }
                                        public Value2 { get; set; }
                                        public Value3 { get; set; }

                                        /// /// Initializes a new instance of the class.
                                        /// 
                                        /// The first value.
                                        /// The second value.
                                        /// The third value.
                                        public MyObject(int value1, int value2, int value3)
                                        {
                                            Value1 = value1;  
                                            Value2 = value2;
                                            Value3 = Value3;
                                        }
                                        

                                        }

                                        var value = new MyObject(1,2,3);

                                        Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

                                        cheers Chris Maunder

                                        K Offline
                                        K Offline
                                        kmoorevs
                                        wrote on last edited by
                                        #19

                                        This would've never happened in VB...just sayin' :laugh: :laugh: :laugh:

                                        "Go forth into the source" - Neal Morse

                                        1 Reply Last reply
                                        0
                                        • C Chris Maunder

                                          public class MyObject
                                          {
                                          public Value1 { get; set; }
                                          public Value2 { get; set; }
                                          public Value3 { get; set; }

                                          /// /// Initializes a new instance of the class.
                                          /// 
                                          /// The first value.
                                          /// The second value.
                                          /// The third value.
                                          public MyObject(int value1, int value2, int value3)
                                          {
                                              Value1 = value1;  
                                              Value2 = value2;
                                              Value3 = Value3;
                                          }
                                          

                                          }

                                          var value = new MyObject(1,2,3);

                                          Why is MyObject.Value3 always equal to 0? /slaps self repeatedly, and insert appropriate comic[^]

                                          cheers Chris Maunder

                                          J Offline
                                          J Offline
                                          Jorgen Andersson
                                          wrote on last edited by
                                          #20

                                          All languages have their stupid parts, this is in my opinion one of the major ones of the languages deriving from C.

                                          Wrong is evil and must be defeated. - Jeff Ello

                                          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