Страница 1 из 1
C#. WebMethod. how to make parameter nullable ?
Добавлено: 22 май 2007, 13:14
dima
[WebMethod]
public string F1(int n1)
{
if(n1 == null)
return "parameter is NULL";
return "parameter is " + n1.ToString();
}
Вопрос - какого числового типа должен быть параметер, чтоб его можно было сделать логику с проверкой на NULL ?
спасибо
Добавлено: 22 май 2007, 14:33
Azazello
В C++ NULL тождественно равен 0. Соответственно, с NULL можно сравнивать все типы, которые могут иметь нулевое значение - все built-in типы и указатели.
Предполагаю, что в C# это тоже верно.
Edit: Забавно, но это не так

...
C#: The null keyword is a literal that represents a null reference, one that does not refer to any object. null is the default value of reference-type variables.
По всей видимости,
Код: Выделить всё
public string Foo( int &frValue )
{
return( string( "parameter is " + ( frValue == null ? "null" : frValue.ToString() ) ) );
}
Добавлено: 22 май 2007, 15:04
dima
завтра буду пробовать. спасибо
Добавлено: 22 май 2007, 19:18
varennik
используйте int? (nullable int). То есть в Вашем случае, сигнатура метода млжет быть такой:
Код: Выделить всё
[WebMethod]
public string F1([XmlElement(IsNullable = true)]int? n1)
Атрибут XmlElement на параметре нужен, чтобы vs правильно сгенеряля wsdl для веб-сервиса.
Доступно только во 2-м фреймворке. К сожалению.
Добавлено: 28 май 2007, 08:32
dima
Код: Выделить всё
[WebMethod]
public string AcceptNull([XmlElement(IsNullable = true)]string s1)
{
if (s1 == null)
return "s1 is NULL";
return "s1 is not null";
}
Visual Studio Help/About говорит, что установлена Microsoft .NET Framework version 2.0.50727
Компилятор выдает ошибку
'System.Xml.XmlElement' is not an attribute class
Другую framework ставить ?
Добавлено: 28 май 2007, 09:49
Yuri1964
dima писал(а):Код: Выделить всё
[WebMethod]
public string AcceptNull([XmlElement(IsNullable = true)]string s1)
{
if (s1 == null)
return "s1 is NULL";
return "s1 is not null";
}
Visual Studio Help/About говорит, что установлена Microsoft .NET Framework version 2.0.50727
Компилятор выдает ошибку
'System.Xml.XmlElement' is not an attribute class
Другую framework ставить ?
Use System.Xml.Serialization.XmlElementAttribute