I'm assuming pass it so you can use it with autolisp. Correct me if I'm wrong.
I've not done that myself but my gut tells me to use currentDocument.SendStringToExecute() but the formatting will be a bit tricky...see below for an example.
currentDocument.SendStringToExecute("(setq test (append test (list \"" + i.ToString() + "\")) ) ", true, false, false);
IMO this is like using a wrecking ball to do a hammers job. I can't stress how much I'd recommend pressing on with c# and .net though. It's strange at first, the debug is a pain compared to writing directly in the command line with lisp, but in the end I think you'd find it hard to want to write in lisp again. dot-net just has too many benefits.
Question:
Instead of MessageBox.Show, is there way to pass the value to a variable that will be available upon command exit?