Насколько хороший вывод типа C#?

Более подробный ответ: изменение route.js на

class Routes extends React.Component {
    render() {
        return (
            <Switch>
                <Route exact path="/" component={AppComponent}/>
                <Route exact path="/products" component={ProductContainer}/>
                <Route path="/products/:productId" component={AddProductComponent}/>
            </Switch>
        )
    }
}
 export default Routes;

и изменение index.js на:

ReactDOM.render(
    <Provider store={store}>
        <Router>
            <Routes/>
        </Router>
    </Provider>
    , document.getElementById('root')
);

работало отлично Надеюсь, это кому-нибудь поможет.

18
задан ThinkingStiff 30 June 2012 в 05:18
поделиться

3 ответа

Существует несколько основных видов вывода типа в C#:

  • Неявно введенные локальные переменные:

    • Только для локальных переменных
    • Только то, когда значение назначено частью объявления
    • Значение, не может быть пустое
    • , Значение не может быть лямбда-выражением, анонимная группа метода или метода (без броска)
    • , тип времени компиляции значения используется для типа переменной
    • , Дальнейшее использование переменной только проверяется по типу, определенному начальной буквой declaration+assignment; они не способствуют самому выводу.
  • вывод аргумента типа Общего метода, т.е. Вы не указываете аргументы типа в вызове к общему методу, компилятор понимает их на основе аргументов.

    • было бы действительно удобно, чтобы иметь это для универсальных типов, а также общих методов
    • Действительно удобный так или иначе - LINQ будет тверд или невозможен использовать без него
    • , Анонимные типы были бы довольно бесполезны без него
    • Действительно сложные правила, даже спецификация является неправильной в нескольких местах
  • вывод типа параметра Лямбда-выражения

    • , Компилятор пытается разработать типы параметров для лямбда-выражений на основе контекста, в котором это использовало
    • Обычно работы вполне прилично, по моему опыту
  • вывод Типа массива, например, new[] { "Hi", "there" } вместо new string[] { "Hi", "there" }

    • Различные небольшие ограничения, ничего серьезного

я, вероятно, забыл некоторые другие функции, которые можно было бы назвать "выводом типа". Я подозреваю, что Вы главным образом интересуетесь первым, но другие могли бы относиться к Вам также :)

41
ответ дан 30 November 2019 в 06:29
поделиться

Это работает только с локальными переменными насколько я понимаю.

1
ответ дан 30 November 2019 в 06:29
поделиться

Это может только использоваться для локальных переменных, но это может обнаружить тип во многих различных формах.

var myVar = SomeMethodThatReturnsInt(); //will know it's an int
var myIntList = new List<int>(); //this works too (although this is technically not type inference)
var myOwnVar = new { Name = "John", Age = 100 }; // will create own type and infer that

РЕДАКТИРОВАНИЕ: Еще один пример Tye Inference с Лямбдами. IE:

var myList = new List<int>();
//add some values to list

int x = myList.Find(i => i == 5); // compiler can infer that i is an int.
7
ответ дан 30 November 2019 в 06:29
поделиться