Привет, неизвестный путник!
Добро пожаловать в документацию по языку C#.NStar! Здесь вы найдете информацию о его
примитивных типах,
отличающихся от оригинального C# от Microsoft.
() T, (n) T
Сокращенная форма для
list(n) T.
[TKey, TValue]
Сокращенная форма для
Dictionary[TKey, TValue].
sbyte
Был удален из C#.NStar как не имеющий смысла - коллекции этого типа никто из нас нигде в реальных программах
не видел, а вне коллекций все равно выравнивается в памяти как int, а то и long int.
short int
Знаковое целое от -32 768 до 32 767 (занимает 2 байта).
unsigned short int
Беззнаковое целое от 0 до 65 535 (занимает 2 байта).
unsigned int
Беззнаковое целое от 0 до 2
32 - 1 (примерно 4 млрд, занимает 4 байта).
long int
Знаковое целое от -2
63 до 2
63 - 1 (примерно 9 ктлн, занимает 8 байт).
unsigned long int
Беззнаковое целое от 0 до 2
64 - 1 (примерно 18 ктлн, занимает 8 байт).
long long
Знаковое целое от -2
int.MaxValue до 2
int.MaxValue - 1 (примерно 646 млн знаков,
память выделяется динамически).
real
С плавающей точкой, занимает 8 байт и содержит примерно 12-13 достоверных цифр, поддерживает числа от примерно
10
-312 (технически немного дальше, но там уже точность крайне сомнительна) до примерно 10
308.
Тип с плавающей точкой, занимающий 4 байта, был упразднен как имеющий недопустимо низкую точность
(всего 3-4 достоверных цифры - а сколько еще можно уместить в 4 байта, чтобы еще на порядок осталось?).
complex
Комплексное с плавающей точкой, занимает 16 байт и содержит действительную и мнимую части типа
real.
Не преобразуется в тип real, даже в возврате из функции, необходимо использовать свойства
c.Real
и
c.Imaginary.
string
Строка. В отличие от C#.NET, является изменяемой и поддерживает быструю конкатенацию с символом или другой строкой
(без полного пересоздания). Не является списком символов, так как поддерживает некоторые операции, которые
список символов не поддерживает, и они не выражаются через другие конструкции C#.NStar
(например, операции по поиску с игнорированием регистра).
T[] (массив)
Был упразднен как устаревший и слишком низкоуровневый для ультра-высокоуровневого языка, такого как C#.NStar.
Вместо этого рекомендуется к использованию
список, который содержит все те же возможности,
что и массив, но также множество возможностей, которые массив не содержит.
list(n) T
n-мерный список типа T. Может быть инициализирован
кортежом (в C#.NStar
один оператор инициализации для кортежа и списка, но для списка поддерживается не более 16 элементов, для большего
необходимо использовать другие средства, такие как функции
Chain() и
Fill()) (и, разумеется, типы всех этих элементов должны быть совместимы
с типом списка). Не является классом, так как невозможно записать его как класс на языке C#.NStar
(на C#.NET он основывается на массиве, а у нас нет массива).
Кортеж
Записывается как
(T1, T2, T3, ...). Инициализируется точно так же:
(value1, value2, value3, ...).
Если не преобразуется в
список, может иметь элементы разных типов, даже несовместимых.
typename
Рекурсивный тип, значениями которого являются другие типы - int, string, типы списков, типы кортежей и прочие.
Используется, например, когда нужно узнать тип какого-либо значения, пришедшего извне (и, например,
создать другое значение того же типа). Рекурсивный тип не может быть значением самого себя,
а также переменная рекурсивного типа не может иметь имя typename.
var
Во время транспайлинга автоматически заменяется типом выражения после знака "=". Временно не работает
в инициализаторе переменной в заголовке цикла
for.
Не является ключевым словом, так как это слово может быть переопределено.
Не являются примитивными типами
Следующие конструкции имеют определенные признаки, делающие их похожими на примитивные типы,
но они таковыми не являются и перечислены отдельно:
BitList
Класс (тип, но не примитивный).
null
Ключевое слово.
Назад к индексу документации