Я хочу быть уверенным, что переменная параметра имеет тип Guid.зная тип переменной во время выполнения
public ActionResult Edit(Guid id)
{
// if id != Guid print error
}
У меня довольно простой вопрос, но я застрял здесь.
Thanks
Я хочу быть уверенным, что переменная параметра имеет тип Guid.зная тип переменной во время выполнения
public ActionResult Edit(Guid id)
{
// if id != Guid print error
}
У меня довольно простой вопрос, но я застрял здесь.
Thanks
В этом случае нет никаких шансов, что переданное значение равно не GUID.
GUID
structure - тип значения - он не может быть унаследован. Это означает, что только тип, который компилятор примет в качестве аргумента для этого метода, равен GUID
.
Это всегда будет. Компилятор обеспечивает это.
Запись параметра Guid id
означает, что к методу может быть передан только экземпляр типа Guid
или подтип Guid
. Любая попытка передать параметр любого другого типа приведет либо к ошибке компилятора, либо к исключению во время выполнения (если вы попытались вызвать метод посредством отражения).
Как указывали другие, Guid
является struct
и не может иметь подтипы.
Как уже отмечалось, в этом конкретном сценарии не обязательно, потому что компилятор обеспечит его.
Однако, в общем, вы бы хотели использовать GetType()
и typeof
для этой проверки.
if (id.GetType() != typeof(System.Guid))
{
// Print Error
}
Что еще это может быть? Если кто-то попытался передать что-то в другом, кроме «Гида», он не будет компилироваться. –
Не могли бы вы немного объяснить, что вы подразумеваете под 'id! = Guid' - вы говорите о _type_ или конкретных значениях? – Oded
@DStanley - В этом случае. Но с непечатанным ссылочным типом вы можете передать подтип. – Oded