Следующий код приводит к использованию неназначенной локальной переменной "numberOfGroups":
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
    numberOfGroups = 10;
}
Однако этот код отлично работает (хотя ReSharper говорит, что = 10 является избыточным):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
    numberOfGroups = 10;
}
Мне что-то не хватает или компилятор мне не нравится ||?
Я сузил это до dynamic, вызывая проблемы (options была динамической переменной в моем вышеприведенном коде). Вопрос все еще остается,  почему я не могу это сделать?
Этот код не компилируется:
internal class Program
{
    #region Static Methods
    private static void Main(string[] args)
    {
        dynamic myString = args[0];
        int myInt;
        if(myString == null || !int.TryParse(myString, out myInt))
        {
            myInt = 10;
        }
        Console.WriteLine(myInt);
    }
    #endregion
}
Однако этот код делает:
internal class Program
{
    #region Static Methods
    private static void Main(string[] args)
    {
        var myString = args[0]; // var would be string
        int myInt;
        if(myString == null || !int.TryParse(myString, out myInt))
        {
            myInt = 10;
        }
        Console.WriteLine(myInt);
    }
    #endregion
}
Я не понимал, что dynamic будет фактором в этом.