Почему не компилируются дробные константы с точкой в конце?
Внезапно обнаружил, что такой код не компилируется: https://ideone.com/KrX8T3
public class Test
{
public static void Main()
{
double x = 1.;
}
}
prog.cs(5,17): error CS1001: Unexpected symbol `;', expecting identifier
Получается, C# хочет полную запись дробного числа 1.0, а сокращённая 1. его не устраивает, хотя в других языках так можно. С чем связано столь странное решение? Причём, опускать лидирующий ноль разрешено и .1 компилируется отлично.
Ответы (1 шт):
Вот почему:
double x = 1;
string y = 1.ToString();
После 1. компилятор ожидает метод. В C# предопределенные типы не настолько примитивны, как в Си.
C# provides a set of predefined struct types called the simple types.
C# has a unified type system. All C# types, including primitive types such as int and double, inherit from a single root object type.
Just as these predefined types are structs, it is also possible to use structs and operator overloading to implement new “primitive” types in the C# language.