|Between the responses to your first post, the responses to this post, and the (strangely out of place) discussion on the Lounge[^], you have a of ideas, and alternate strategies for using Tuples.
I want to respond directly to your question about using Tuples. In my opinion, they can best be described as a "bag of pairs" where, for every pair in the bag: the first element, of the pair, is a Type; and, the second element is a value of that Type.
And, do keep in mind that Tuples were introduced in .NET 4.0.
So, they are most appropriate, imho, if you need to return a bunch of different types: if every Type in your Tuple elements is the same: then use one of the other strategies, or a generic List<Type>, or another method.
Let me try and make this concrete for you: you can download this project (with source) compiled against .NET 4.0 here:[^].
1. create a simple 'WinForms application: drop a 'CheckBox, a 'DateTimePicker, a 'TextBox, and a 'NumericUpDown on the main Form.
2. put two 'Buttons on the Form: title the first 'Button "Save Tuple," and the second "Restore Tuple."
Now let's look at what happens using a real Tuple in action: (attention: code-style obsessive-compulsives: I am using extra indentation, and line-breaks, here for clarity for the OP, it would not be my standard style):
1. first you declare a Form-scoped variable of Type Tuple for re-use:
private Tuple<CheckState, DateTime, string, decimal> _fourTuple;1. You run the application, change the values of any of the four controls any way you like, and click the "Save Tuple" button: this code executes:
private void SaveTupleButtonClick(object sender, EventArgs e)
_fourTuple = Tuple.Create
}Here I am using the static Tuple.Create method, which was introduced in .NET FrameWork 4.0, to save some typing; it's exactly the same as if I wrote the fuller version:
private void SaveTupleButton_Click(object sender, EventArgs e)
_fourTuple = new Tuple<CheckState, DateTime, string, decimal>
}And now: what ? Well, you've saved the current values of these diverse types of Controls in your tuple. So, go ahead and change the values of all the Controls, and hit the "Restore Tuple" 'Button:
private void RestoreTupleClick(object sender, EventArgs e)
checkBox1.CheckState = _fourTuple.Item1;
dateTimePicker1.Value = _fourTuple.Item2;
textBox1.Text = _fourTuple.Item3;
numericUpDown1.Value = _fourTuple.Item4;
}I hope you will see the controls' values reset to the exact value they were: when you pressed the "Save Tuple" 'Button.
Hope this example gives you some ideas.
 Keep in mind that 'NumericUpDownControls have 'Minimum and 'Maximum value settings, as well as a 'DecimalPlaces property: if you type in a value out of range: it will revert to the nearest min or max value: this can have a confusing run-time effect for the end user.
"One of the few good things about modern times: If you die horribly on television, you will not have died in vain. You will have entertained us." Kurt Vonnegut