Outside of the class field access --------------------------------- Packet packet1 = new Packet(); byte[] someData = packet1.Data; // Should work just fine packet1.Data = someData; // Should cause problems In derived classes field access ------------------------------- byte[] someData = this.data; // Should work fine this.data = new byte[4]; // Should modify this.data fine AND call a method