Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# properties issue

The other day I bumped into a little problem regarding C#'s properties.

Let's say I have this setup:

public class Point
{
 public float X;
 public float Y;
}

public class Control
{
 protected Point m_Position = new Point();

 public Point Position
 {
  get { return m_Position; }
  set 
  { 
    m_Position = value; }
    // reorganize internal structure..
    reorganize();
  }

  protected reorganize()
  {
   // do some stuff
  }
}

This is all fine, but when it comes to usage, I could write something like:

Control myControl = new Control();
myControl.Position.X = 1.0f;

The thing is, my Control class won't recognize that the Position has been changed because set() hasn't been called.

Is there a way to make Control aware of any Position changes?

like image 584
impmja Avatar asked Apr 22 '10 12:04

impmja


People also ask

What C is used for?

C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...

What is the full name of C?

In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.

Is C language easy?

C is a general-purpose language that most programmers learn before moving on to more complex languages. From Unix and Windows to Tic Tac Toe and Photoshop, several of the most commonly used applications today have been built on C. It is easy to learn because: A simple syntax with only 32 keywords.

What is C language basics?

What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.


1 Answers

There are a number of options in this case:

  1. Make the X and Y properties of your Point class immutable. That is, require the user to create a new Point whenever X or Y changes.
  2. Setup an event on the Point class and subscribe to it on the Position class. Whenever the Point's X or Y changes, fire the event. The Position class can handle side-effects in the event handler.

In this case, I would suggest option #1

like image 69
Tom Cabanski Avatar answered Oct 11 '22 21:10

Tom Cabanski