Czy istnieje wspólny sposób przekazywania pojedynczego elementu typu Tdo metody, która oczekuje IEnumerable<T>parametru? Językiem jest C #, wersja ramowa 2.0. Obecnie używam metody pomocniczej (to .Net 2.0, więc mam całą masę rzutowych / rzutujących metod pomocniczych podobnych do LINQ), ale to po prostu wydaje się głupie: public static class IEnumerableExt …
Czy ktoś może mi powiedzieć, czy istnieje sposób, aby za pomocą generyków ograniczyć argument typu ogólnego Tdo tylko: Int16 Int32 Int64 UInt16 UInt32 UInt64 Znam wheresłowo kluczowe, ale nie mogę znaleźć interfejsu tylko dla tych typów, Coś jak: static bool IntegerFunction<T>(T value) where T : INumeric
Zgodnie z dokumentacją ==operatora w MSDN , W przypadku predefiniowanych typów wartości operator równości (==) zwraca wartość true, jeśli wartości jego argumentów są równe, w przeciwnym razie false. W przypadku typów odwołań innych niż łańcuch == zwraca wartość true, jeśli dwa operandy odnoszą się do tego samego obiektu. Dla typu …
Mam w swoim projekcie klasę ogólną z klasami pochodnymi. public class GenericClass<T> : GenericInterface<T> { } public class Test : GenericClass<SomeType> { } Czy jest jakiś sposób, aby dowiedzieć się, czy Typeobiekt pochodzi GenericClass? t.IsSubclassOf(typeof(GenericClass<>)) nie działa.
Mam IEnumerable<T>metodę, której używam do znajdowania formantów na stronie WebForms. Ta metoda jest rekurencyjna i mam pewne problemy ze zwróceniem żądanego typu, gdy yield returnzwraca wartość wywołania rekurencyjnego. Mój kod wygląda następująco: public static IEnumerable<Control> GetDeepControlsByType<T>(this Control control) { foreach(Control c in control.Controls) { if (c is T) { yield …
Zastanawiam się, czy jest jakiś szczególny powód w Javie, aby zawsze używać „ extends” zamiast „ implements” do definiowania granic parametrów. Przykład: public interface C {} public class A<B implements C>{} jest zabronione, ale public class A<B extends C>{} jest poprawne. Jaki jest tego powód?
Mam ogólną metodę zdefiniowaną w ten sposób: public void MyMethod<T>(T myArgument) Pierwszą rzeczą, którą chcę zrobić, jest sprawdzenie, czy wartość myArgument jest wartością domyślną dla tego typu, mniej więcej tak: if (myArgument == default(T)) Ale to się nie kompiluje, ponieważ nie mam gwarancji, że T zaimplementuje operator ==. Więc zmieniłem …
Chcę zrobić coś takiego: myYear = record.GetValueOrNull<int?>("myYear"), Zwróć uwagę na typ zerowalny jako parametr ogólny. Ponieważ GetValueOrNullfunkcja może zwrócić null, moja pierwsza próba była następująca: public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName) where T : class { object columnValue = reader[columnName]; if (!(columnValue is DBNull)) { return (T)columnValue; } …
Czy istnieje czysta metoda wyśmiewania klasy za pomocą ogólnych parametrów? Powiedz, że muszę wyśmiewać klasę, Foo<T>którą muszę przekazać do metody, która oczekuje Foo<Bar>. Z łatwością mogę wykonać następujące czynności: Foo mockFoo = mock(Foo.class); when(mockFoo.getValue).thenReturn(new Bar()); Zakładając, getValue()zwraca typ ogólny T. Ale to będzie miało kocięta, kiedy później przekażę to do …
W Internecie można znaleźć: Wyższy rodzaj == typ konstruktora? class AClass[T]{...} // For example, class List[T] Niektórzy twierdzą, że jest to typ bardziej uporządkowany, ponieważ streszcza typy, które byłyby zgodne z definicją. Wyższe typy pokrewne to typy, które pobierają inne typy i konstruują nowy typ Są one jednak znane również …
Jaki jest powód, dla którego Java nam na to nie pozwala private T[] elements = new T[initialCapacity]; Zrozumiałem, że .NET nie pozwala nam na to, ponieważ w .NET masz typy wartości, które w czasie wykonywania mogą mieć różne rozmiary, ale w Javie wszystkie rodzaje T będą odwołaniami do obiektów, dzięki …
Mam problem z nawigacją w regule Javy w celu wnioskowania o ogólnych parametrach typu. Rozważ następującą klasę, która ma opcjonalny parametr listy: import java.util.Collections; import java.util.List; public class Person { private String name; private List<String> nicknames; public Person(String name) { this(name,Collections.emptyList()); } public Person(String name,List<String> nicknames) { this.name = name; …
Mam; List<String> stringList = new ArrayList<String>(); List<Integer> integerList = new ArrayList<Integer>(); Czy istnieje (łatwy) sposób na uzyskanie ogólnego typu listy?
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.