Typed vs Strongly Typed in С#

В С# есть ли какая-нибудь причина сказать строго типизированный vs только что напечатан? Когда кто-то говорит набранный класс, я думаю о каком-то типе, кроме объекта. Почти все, кроме объекта, набирается на С#.

Как только вы определяете класс, который не является объектом, этот класс является типом. Оттуда он больше не печатается.

Кстати, это не вопрос безопасности типа (допустимый доступ к памяти и совместимость с объектами).

Ответ 1

Ваша номенклатура неверна. это не strongly typed vs just typed

Это strong vs. weak typing

Как только вы говорите об этом в этих терминах, тогда есть большое различие.

Вы можете прочитать об этом по всему Googles.

http://en.wikipedia.org/wiki/Strong_and_weak_typing#Definitions_of_.22strong.22_or_.22weak.22

Edit:

Нет такой вещи, как просто типизированный язык. У вас есть динамический или статический и слабый против сильной типизации, которые затрагивают два разных типа проблем. Другая справочная статья

В чем разница между строго типизированным языком и статически типизированным языком?

Ответ 2

Термины сильно и слабо типизированы относятся к жесткости правил языка относительно неявных преобразований типов. Сильно типизированный язык гораздо более строг в отношении того, какие имплицитные преобразования он принимает, а слабо типизированный - более расслаблен. Другими словами, у многих языков есть типы, но только подмножество из них имеет сильную типизацию.

Возможно, вы сбиваете эти термины с терминами статической и динамической типизации, которые относятся к знанию типов при компиляции или во время выполнения, соответственно. В этом смысле, возможно, вы слышали термин, введенный как сокращенное обозначение для статического ввода. (Хотя я не могу сказать, что я согласен с использованием введенного термина, я думаю, что это единственная интерпретация, которая, по-видимому, имеет смысл.)

Ответ 3

Помните, что последние спецификации языка С# на самом деле не используют термин "строго типизированный" в описании языка. Это, в отличие от, например, спецификации языка Java, где они очень явны, заявляя, что она строго типизирована.

Так как спецификация языка С# не использует этот термин, он также не определяет его. Это одна из причин, по которой вам трудно ответить на ваш вопрос. Однако вы можете сделать дело, хотя, по своей спецификации, С# явно не является "строго типизированным" языком, тем не менее он имеет большинство характеристик строго типизированного языка.

Чтобы ответить на ваш вопрос С#, я рекомендую взглянуть на спецификацию языка Java (Java очень похож на С#, и многие из основ очень похожи, если не совпадают). В главе 4 говорится:

Язык программирования Java также является строго типизированным языком, потому что типы ограничивают значения, которые может удерживать переменная (§4.12), или что выражение может произвести, ограничить операции, поддерживаемые эти значения и определить значение операций. сильный статическая типизация помогает обнаруживать ошибки во время компиляции.

Я предоставляю этот ответ, пока я узнаю, что другие ответы содержат ссылки на информацию о Википедии о сильной типизации в целом, вопрос касается С# в частности. Я считаю, что определение Java более полезно и подходит к OP.

Ответ 4

Другой угол, который не пытается определить, является ли язык сильным или слабым, статическим или динамическим.

Я виноват в том, что говорю "строго типизированный". Особенно, когда я работаю с конкретным проектом, который мы поддерживаем. Эта ужасная кодовая база использует DataTable для почти всего, и значения выбираются как объект, из столбцов по индексу с большим количеством кастингов в коде приложения. И нет комментариев, объясняющих, что, черт возьми, происходит.

Часть этой системы теперь перестраивается с использованием EF и Linq. И теперь мы проектируем запросы в pocos/dtos. Таким образом, наличие службы с методом, который возвращает как общий список определенного типа, - это то, о чем я говорю, когда я говорю строго типизированный. Это сервис и его методы, которые строго типизированы, я не говорю о самом С#.