Jump to content

типоф

typeof , поочередно также typeOf и TypeOf , — это оператор, несколькими языками программирования для определения типа данных переменной предоставляемый . Это полезно при создании программ, которые должны принимать несколько типов данных без явного указания типа.

В языках, поддерживающих полиморфизм и приведение типов , оператор typeof может иметь одно из двух различных значений при применении к объекту . В некоторых языках, например Visual Basic , [1] оператор typeof возвращает динамический тип объекта. То есть он возвращает истинный исходный тип объекта независимо от приведения типов. В этих языках оператор typeof — это метод получения информации о типе во время выполнения .

На других языках, таких как C# [2] или Д [3] и, в некоторой степени, на C (в рамках нестандартных расширений и предлагаемых стандартных версий ), [4] [5] оператор typeof возвращает статический тип операнда. То есть он оценивает объявленный тип в данный момент в программе, независимо от его исходной формы. Эти языки обычно имеют другие конструкции для получения информации о типе во время выполнения, например typeid .

В нестандартном (GNU) расширении языка программирования C typeof может использоваться для определения общего макроса для определения максимального значения двух параметров:

#define max(a,b) ({ typeof (a) _a = (a); typeof (b) _b = (b); _a > _b ? _a : _b; })

В С# :

// Given an object, returns if it is an integer.
// The "is" operator can be also used to determine this.
public static bool IsInteger(object o)
{
    return o.GetType() == typeof(int);
}

Начиная с C23, typeof является частью стандарта C. Также был добавлен оператор typeof_unqual, который аналогичен typeof, за исключением того, что он удаляет cvr-квалификацию и атомарную квалификацию. [6] [7] В VB.NET вариант typeof на C# следует преобразовать в метод GetType VB.NET . Ключевое слово TypeOf в VB.NET используется для сравнения переменной ссылки на объект с типом данных.

В следующем примере выражения TypeOf...Is используются для проверки совместимости типов двух ссылочных переменных объекта с различными типами данных.

Dim refInteger As Object = 2

MsgBox("TypeOf Object[Integer] Is Integer? " & TypeOf refInteger Is Integer)
MsgBox("TypeOf Object[Integer] Is Double? " & TypeOf refInteger Is Double)

Dim refForm As Object = New System.Windows.Forms.Form

MsgBox("TypeOf Object[Form] Is Form? " & TypeOf refForm Is System.Windows.Forms.Form)
MsgBox("TypeOf Object[Form] Is Label? " & TypeOf refForm Is System.Windows.Forms.Label)
MsgBox("TypeOf Object[Form] Is Control? " & TypeOf refForm Is System.Windows.Forms.Control)
MsgBox("TypeOf Object[Form] Is IComponent? " & TypeOf refForm Is System.ComponentModel.IComponent)

В JavaScript :

function isNumber(n)
{
  return ( typeof n === 'number' );
}

В TypeScript : [8]

function (param: typeof existingObject) { ... }
let newObject: typeof existingObject;

См. также

[ редактировать ]
  1. ^ «Оператор TypeOf (Visual Basic)» . MSDN . Архивировано из оригинала 28 ноября 2016 г.
  2. ^ "typeof (C#)" . MSDN . Архивировано из оригинала 10 сентября 2016 г.
  3. ^ «Объявления — Язык программирования D 1.0» . Цифровой Марс . 30 декабря 2012 г. Архивировано из оригинала 7 октября 2023 г.
  4. ^ « Typeof » в «Использовании коллекции компиляторов GNU».
  5. ^ Менейд, ЖанХейд (07 марта 2021 г.). «Не так уж и волшебно — typeof(…) в C | r2» . Открытые стандарты . Проверено 2 декабря 2021 г.
  6. ^ «N2927: Не так уж и волшебно — typeof для C» . Открытые стандарты . 2022-02-02. Архивировано из оригинала 1 декабря 2023 года.
  7. ^ «Рассмотрите возможность переименования Remove_quals» (PDF) . Открытые стандарты . 06.02.2022. Архивировано (PDF) из оригинала 17 февраля 2024 г.
  8. ^ «Использование 'typeof' для определения типа» . Изучите TypeScript . Проверено 28 января 2022 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4cd020b461914eb32ac9bdc0a714b427__1709312400
URL1:https://arc.ask3.ru/arc/aa/4c/27/4cd020b461914eb32ac9bdc0a714b427.html
Заголовок, (Title) документа по адресу, URL1:
typeof - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)