about the index of string[] args, well, you are really going out the boundary of the array, that's because string[0], means 0 items, not that the last index is 0 (as used to be in VB).
If I'm not wrong in C++, there is always a first element in the match for this array, that's the exe name, but this is C#, and that info is taken away along with the enviroment info (like the working path and stuff) (those are the things the OS pass to the exe). So, in C# that string[] args is really the execution parameters of the exe (as you know), if there are none, it will tell you that the size is 0, don't expect -1. It tells you exactly how much items it has. for example, if you write: int[] x = new int[5]; you will have: x[0], x[1], x[2], x[3], x[4], exactly 5 elements. but in VB, if you write: Dim x(5) as integer you will have: x(0), x(1), x(2), x(3), x(4), x(5), exactly an ubound of 5. so to make an empty array in C#, you do: int[] z = new int[0];, that's like: Dim x(-1) as integer in VB, that -1 is a convention, and a ugly one for that matter. Stop counting things as a taylor, count as a mathematic, I really hate those that come from VB 6, that used Option Base 1 (the dafault), that now write for .NET, they keep thinking that the default is an lbound of 1, and they are wasting an element. rembember this: THE LOWER BOUND OF ANY ARRAY IN .NET WILL BE 0. If you come from VB (As I did), I'll tell you that do not look for cstr, val, or imp in C#, if you want them, I'll tell you that get them is wrost than learn the C# way.¿did I spot you? ~theraot
