VB.NET vs C# really does come down to, mostly, a matter of opinion.
Mine would be strongly in the C# camp, as VB.NET's predecessors (VB & VBA) actively encouraged horrible coding practices ("On Error Resume Next", anyone?) and they live on, in the culture surrounding the language and in gestures towards backwards compatibility.
However, given your specific situation, I would actually float a different idea, specifically IronPython.
It seems a fantastic match for this need:
move into a .NET-based language so that I can start making use of the tools exposed in ArcObjects that ESRI has not yet made available through Python
Cons:
You will be living on an obscure and bleeding edge, especially within the ESRI community but even to some extent in the larger .NET community.
You'll spend some time troubleshooting obscure bugs that come from the impedance mismatch of several layers of abstraction: IronPython is almost exactly like Python; ESRI's .NET API is almost like the underlying COM it's all written in....
Pros:
You get to explore an obscure and bleeding edge, lighting the way for the ESRI and .NET communities to follow in your footsteps!
You can keep working in python (until you hit other limitations) and make the move to other .NET languages a gradual one instead of a sharp transition: you can mix and match the right language for the right need, in the same project.
Having a fast-and-loose scripting language at hand is extremely helpful even after you've moved most development to a more formal/structured language.
Your existing python geoprocessing scripts will be somewhat portable (the GP object is visible in .NET-land too, and IronPython supports IDispatch so there's a chance they might be directly portable with just a few code-line changes).
I really wish more people were doing this. (And if they are; I wish they were publicising it!)
Note: simply for learning the ArcObjects API & regardless of doing production development, IronPython gives you something neither C# nor VBA can: a REPL -- one of the best ways to explore an API by far.
Best Answer
Download and install comtypes*, put the
Snippets
module from Mark Cederholm in PYTHONPATH, and you're all set.For background see Mark Cederholm's presentations for UberPyGeeks on "Using ArcObjects in Python". There are separate ones for VBA and C++ developer perspectives. They use Visual Studio (yes Express is ok) and the Windows SDK, but these aren't required, just ArcGIS, Python and comtypes are sufficient.
Getting the Snippets module
* Note for 10.1+ you need to make a small change to
automation.py
in the comtypes module. See ArcObjects + comtypes at 10.1.Next steps
...or: brain gone snaky? Looking at the c# code examples makes your eyes swim, and try as you might you just can't think like a crane? Look here: