Страница 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