Wartość nie może być zerowa.

0

Witam. Mam taki warunek:

if ((words = wcfServiceClient.getDictionary().ToList()) == null)

Metoda getDictionary zwraca obiekt typu List<String> czasem zmienna może być nullem. Właśnie dopóki nie przesyłam nulla wszystko jest ok, ale jeśli zwróci null to wtedy powyższy if rzuca mi, że wartość nie może być zerowa. Jak to obejść?

Jeszcze druga sprawa jak dotąd więcej miałem do czynienia z Javą i zdziwiło mnie w C#, że jeśli metoda zwraca List<String> to przy jej przypisaniu do obiektu words tak jak wyżej, który jest

List<String> words

muszę używać metody toList()

 a nie wystarczy samo coś takiego: <code class="csharp">words = wcfServiceClient.getDictionary()
1

Jeśli wcfServiceClient.getDictionary() zwróci null, to jeśli wywołasz na nim ToList, to oczywiste, że program się wykrzaczy. Musisz najpierw sprawdzić, czy getDictionary() nie zwraca null, a potem dopiero wywołać ToList.

Co do Twojego zdziwienia - jeśli metoda 'getDictionaryzwracaList<string>, to nie musisz żadnego ToListwywoływać. Z tymże, nazwa tej metody sugeruje, że zwracaDictionary, a nie List''.

1
if(((dict = wcfServiceClient.getDictionary()) == null) || ((words = dict.ToList()) == null))
0
somekind napisał(a):

Jeśli wcfServiceClient.getDictionary() zwróci null, to jeśli wywołasz na nim ToList, to oczywiste, że program się wykrzaczy. Musisz najpierw sprawdzić, czy getDictionary() nie zwraca null, a potem dopiero wywołać ToList.

Co do Twojego zdziwienia - jeśli metoda 'getDictionaryzwracaList<string>, to nie musisz żadnego ToListwywoływać. Z tymże, nazwa tej metody sugeruje, że zwracaDictionary, a nie List''.

Ale jeśli nie dam toList() a tylko

if (((words = wcfServiceClient.getDictionary()) == null))

to podkreśla mi getDictionary() na czerwono i sygnalizuje błąd:

cannot implicitly convert type string[] to system.collections.generic.list<string>
a metoda getDictionary zwraca List<String> oto jej deklaracja:

public List<String> getDictionary()

words też jest typu List:

List<String> words = null;
1

Komunikat cannot implicitly convert type string[] to system.collections.generic.list<string> świadczy w tym przypadku o tym, że getDictionary() zwraca tablicę, a nie listę. Masz coś namieszane z tymi metodami, jesteś pewien, że na dobrą patrzysz?

0

No właśnie też mi to nie pasowało. Jest to aplikacja WCF i te metoda pochodzi z serwisu po dodaniu addServiceReference:

Interfejs serwisu:

namespace WcfService1 {
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1 {

        [OperationContract]
        void setPassword(String pass);

        [OperationContract]
        String getPassword();

        [OperationContract]
        List<String> getDictionary();

    }
}

Ale teraz zauważyłem, kiedy usunąłem referencje do serwisu i chciałem dodać od nowa do klienta referencje do serwisu to zauważyłem, że na dole dostałem taki warning:

Warning 1 The 'bindingConfiguration' attribute is invalid - The value 'BasicHttpBinding_IService1' is invalid according to its datatype 'serviceBindingConfigurationType' - The Enumeration constraint failed. C:\Users\Piotr\documents\visual studio 2013\Projects\Client\Client\App.config 14 39 Client

1 użytkowników online, w tym zalogowanych: 0, gości: 1