Rzutowanie to proces, w którym typ obiektu jest jawnie konwertowany na inny typ, jeśli konwersja jest dozwolona. Ten proces może prowadzić do zmiany wartości.
Rozważmy następujący przykładowy kod: class SampleClass { public long SomeProperty { get; set; } } public void SetValue(SampleClass instance, decimal value) { // value is of type decimal, but is in reality a natural number => cast instance.SomeProperty = (long)value; } Teraz muszę zrobić coś podobnego poprzez refleksję: void SetValue(PropertyInfo …
Otrzymuję dyktando z jednej „warstwy” kodu, na którym są wykonywane pewne obliczenia / modyfikacje przed przekazaniem go do innej „warstwy”. Oryginalne klucze i wartości „string” są takie unicode, ale warstwa, do której są przekazywane, akceptuje tylko str. Będzie to często nazywane, więc chciałbym wiedzieć, jaki byłby najszybszy sposób na konwersję …
Jeśli spróbuję rzucić Stringajava.util.Date , kompilator Java wyłapuje błąd. Dlaczego więc kompilator nie oznacza następującego błędu jako błędu? List<String> strList = new ArrayList<>(); Date d = (Date) strList; Oczywiście JVM rzuca ClassCastException w czasie wykonywania, ale kompilator go nie oflaguje. Zachowanie jest takie samo w przypadku javac 1.8.0_212 i 11.0.2.
Czytałem różne posty na temat Przepełnienia stosu RE: dereferujący błąd wskaźnika pisanego czcionką typu. Rozumiem, że błąd jest zasadniczo ostrzeżeniem kompilatora o niebezpieczeństwie dostępu do obiektu za pomocą wskaźnika innego typu (choć wydaje się, że istnieje wyjątek char*), co jest zrozumiałym i rozsądnym ostrzeżeniem. Moje pytanie jest specyficzne dla poniższego …
W tej odpowiedzi , Zwol wykonane tego twierdzenia: Prawidłowym sposobem konwersji dwóch bajtów danych ze źródła zewnętrznego na 16-bitową liczbę całkowitą ze znakiem jest użycie funkcji pomocniczych takich jak to: #include <stdint.h> int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0]) << 8) | (((uint32_t)data[1]) << 0); return ((int32_t) …
Śledzę błąd w kodzie strony trzeciej i zawęziłem go do czegoś podobnego do. use libc::c_void; pub unsafe fn foo() {} fn main() { let ptr = &foo as *const _ as *const c_void; println!("{:x}", ptr as usize); } Działa na stabilnej wersji 1.38.0, wypisuje wskaźnik funkcji, ale beta (1.39.0-beta.6) i …
Problem Rozważ następujący problem projektowy w Haskell. Mam prosty, symboliczny EDSL, w którym chcę wyrażać zmienne i wyrażenia ogólne (wielomiany wielomianowe), takie jak x^2 * y + 2*z + 1. Ponadto chcę wyrazić pewne równania symboliczne zamiast wyrażeń, powiedzmy x^2 + 1 = 1, a także definicji , takich jak …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.