Consider the following code:
private string _text = null;
private string[] _values = null;
public string Text { get { return _text; } }
public string[] Values { get { return _values; } }
What does this accomplish that having the public members alone would not?
By using properties instead of public fields, you hide the implementation.
If at some point you need to change what the Text and Values properties return, you can change the behavior without changing the API of the class.
Additionally, this idiom limits external access to the exposed data as read-only.