Что не так с не обнуляемыми объектами?

В последнее время я смотрю на DbC и SpeC#, которые, похоже, поддерживают необнуляемые объекты. К сожалению, SpeC#, похоже, был заброшен.

  1. Похоже, в SpeC# встроено много хороших языковых функций, так почему же он был заброшен?
  2. Будут ли какие-либо проблемы с тем, чтобы все объекты по умолчанию не обнулялись, поэтому вам нужно написать int?, string? и даже MailMessage? если вы действительно хотели обнуляемый объект?
  3. Я вижу здесь аналогию Sql, где вы можете проверить свойства класса как обнуляемые или не обнуляемые. Не могли бы вы даже наложить ограничения на свойства, как вы можете с помощью столбцов таблицы SQL?

Я не вижу проблем с такими функциями, встроенными в язык. Кто-нибудь может просветить меня об этом?

1 ответ

Вы видели, что новый фреймворк Contracts станет частью.NET 4.0?

Преимущество создания библиотеки вместо языковой функции состоит в том, что она сразу становится доступной на всех языках без какой-либо работы со стороны языковых команд. Очевидно, есть и недостатки...

Ссылки:

Сказав все это, я хотел бы иметь возможность написать:

public Stream! Foo(string! x)

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

Другие вопросы по тегам