Здравствуйте, VladD2, Вы писали:
VD>В дотнете это физически невозможно. Например, null-ссылка может быть получена внутри массива или внутри структуры созданной дефолтным конструктором.
Да с массивом и структурой действительно лажа..
Но подобную штуку видел в С++/CIL
struct A
{
int i;
String^ s; //Error can't use managed pointer inside unmanged struct
char Cs[20];
}
struct val B
{
int i;
String^ s; //All ok
char Cs[20]; //Critical warning -- mixed types not allowed
// светится как ошибка, но прагмой специальной можно отключить, но тогда эта струкутра не будет CLS Compilant
}
Так что для таких типов можно запретить массивы/структы.
Ты часто видел массивы варантов? а не листы, например.
можно:
вставлять проверки на Null и исключение по несоотвтесвию контарктов в точах соприкосовения NonNull типов и внешних дотнетовских тпов
запретить использовать наши типы с внешними, небезопасными
какой то свой, "безоасный" тип структа, как в С++/CLI