Что не так с не обнуляемыми объектами?
В последнее время я смотрю на DbC и SpeC#, которые, похоже, поддерживают необнуляемые объекты. К сожалению, SpeC#, похоже, был заброшен.
- Похоже, в SpeC# встроено много хороших языковых функций, так почему же он был заброшен?
- Будут ли какие-либо проблемы с тем, чтобы все объекты по умолчанию не обнулялись, поэтому вам нужно написать int?, string? и даже MailMessage? если вы действительно хотели обнуляемый объект?
- Я вижу здесь аналогию Sql, где вы можете проверить свойства класса как обнуляемые или не обнуляемые. Не могли бы вы даже наложить ограничения на свойства, как вы можете с помощью столбцов таблицы SQL?
Я не вижу проблем с такими функциями, встроенными в язык. Кто-нибудь может просветить меня об этом?
1 ответ
Вы видели, что новый фреймворк Contracts станет частью.NET 4.0?
Преимущество создания библиотеки вместо языковой функции состоит в том, что она сразу становится доступной на всех языках без какой-либо работы со стороны языковых команд. Очевидно, есть и недостатки...
Ссылки:
Сказав все это, я хотел бы иметь возможность написать:
public Stream! Foo(string! x)
также указав, что Foo не должен получать нулевую ссылку и не будет возвращать ее. Думаю, было бы полезно иметь дополнительный бит синтаксиса только для этого типа контракта.