Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Заблокирован

Создание byte-переменной через new запрещено в контексте PascalABC.Net

09.10.2018, 19:30. Показов 864. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
begin
  typeof(System.Byte).GetConstructors.PrintLines;
end.
Выводит пустоту. Но, следующий отрывок кода на C# компилируется:
C#
1
var x = new byte();
Как это понимать? Почему, если GetConstructors() имеет Length == 0, то C# позволяет создавать объект типа byte через new, а PascalABC.Net - нет?

Связанный Issue
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.10.2018, 19:30
Ответы с готовыми решениями:

Создание рабочего окна в PascalABC.NET
Мне нужно создать такое окно, чтобы в белой штуки была информация, а клавишами 1-4 управлять. Меню и информация в верху. Средство выбора...

Создание серьезных приложений на PascalABC.NET
Можно ли создавать серьезные приложения на PascalABC.NET (именно на нем) или же все-таки пора начать учить что-то более продвинутое?

Создание нескольких окон в PascalABC.Net
Как создать программу, работающую сразу с двумя графическими окнами?

7
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
09.10.2018, 20:11
Я думаю что это какая то особая фича C#, возможно как то связанная с тем, что можно инициализировать поля как то так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
type
  r1=record
    x,y: integer;
  end;
 
begin
  new r1(
    x := 5,
    y := 10
  )
end.
(Это псевдокод на паскале, потому что мне лень стартовать студию для такой маленькой программы на C#)

Не по теме:

Я не совсем понимаю зачем вы написали тут, на этом форуме обычно решают школьные задачи, за тех кто не умеет, а не выясняют какие то нормальные вопросы...

1
Заблокирован
10.10.2018, 03:13  [ТС]
Цитата Сообщение от Sun Serega Посмотреть сообщение
Это псевдокод на паскале, потому что мне лень стартовать студию для такой маленькой программы на C#
Используйте #Develop, либо Repl.it, либо Rextester.
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
10.10.2018, 05:47
Цитата Сообщение от MrFresnel Посмотреть сообщение
var x = new byte();
ИМХО: это не баг, это фича C# для инициализации переменной значением по умолчанию, то-же самое что написать
C#
1
byte x = 0;
, а в паскале и так переменные сами инициализируются значениями по умолчанию.
если написать просто
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
namespace Test
{   
    class Program
    {   
        public static void Main(string[] args)
        {
            byte x;
            Console.WriteLine("x={0}",x);//bug.cs(9,30): error CS0165: Use of unassigned local variable `x'
        }
    }
}
то будет ошибка error CS0165: Use of unassigned local variable `x'

Не по теме:

то что в паскале по умолчанию в C через грабли

1
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
10.10.2018, 09:27
Цитата Сообщение от Joy Посмотреть сообщение
по умолчанию, то-же самое что написать
Нет, по умолчанию - это default(byte)

Цитата Сообщение от Joy Посмотреть сообщение
то что в паскале по умолчанию в C через грабли
В C и C++ не инициализируется, а в C# оно тоже инициализируется по умолчанию, потому что у C# и паскаля общая платформа .Net .

Вот только это плохой стиль - использовать не инициализированные переменные. В C# это вроде оставили чтоб народ с C++ быстрее переходил на C#, иначе им было бы неудобно. В паскале такое тоже есть, куча фич из дельфи чтоб дельфистам небыло сложно перейти на этот паскаль, если чо.
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
10.10.2018, 09:58
Цитата Сообщение от Sun Serega Посмотреть сообщение
Нет, по умолчанию - это default(byte)
как, и то, что я выше написал:
https://docs.microsoft.com/ru-... lues-table
0
Заблокирован
10.10.2018, 11:16  [ТС]
Цитата Сообщение от Sun Serega Посмотреть сообщение
в C# оно тоже инициализируется по умолчанию
В C# требуется явная инициализация переменных, в отличии от PascalABC.Net. Цитаты:
Неинициализированные переменные нельзя использовать в C#.
Также можно использовать конструктор по умолчанию или неявный конструктор по умолчанию, чтобы получить значение по умолчанию для типа значения, как показано в следующем примере.
При попытке использования переменной, которая не инициализирована в C# будет ошибка компиляции. Код Joy это доказывает.

Всем принявшим участие в дискуссии спасибо. Вопрос снят.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
10.10.2018, 14:34
C#
1
2
3
4
5
6
7
8
9
10
11
12
namespace My
{
    public static class Program
    {
        public static void Main()
        {
            var a = new byte[10];
            System.Console.WriteLine(a[0]);//0
            System.Console.ReadLine();
        }
    }
}
Так же и с полями, всё инициализирует нулями CIL, он общий для паскаля и C#. С переменными - это сделано только для тех, кто приходит с C++. А паскаль для этой инициализации ничего не делает, он лишь не_запрещает использовать не инициализированные переменные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2018, 14:34
Помогаю со студенческими работами здесь

Создание своего модуля для PascalABC.net
Здравствуйте уважаемые форумчане, подскажите как создать из файла Pas файл PCU. Чем и как его можно откомпилировать? Просто стоит задача...

Отправка из VB.NET через MySQL Connector (net 4.0) переменной типа DateTime - ошибка (несовпадение типов)
Черти что... На сегодняшний день языки программирования, как и форматы, размножились с такой скоростью, что в пору валить новый Вавилон......

График температур. Подправить код из turbo (не знаю где писать в PascalABC или PascalABC.net)
На Pascal ABC не запускается(( uses crt,graph; const n=31; {массив - константа, можно ввести с клавиатуры} ...

Где можно скачать PascalABC а не PascalABC.Net
Где можно скачать PascalABC а не PascalABC.Net?

В чем разница PascalABC.net и PascalABC
Скажите в чем разница PascalABC.net И PascalABC. Помню когда-то давно программы работающие в PascalABC у меня не работали в .net


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru