Вопросы с тегом «generics»

Обобщения являются формой параметрического полиморфизма, встречающейся в ряде языков, включая языки .NET, Java, Swift и Rust.


8
Как сравнить значения универсальных типов?
Как сравнить значения универсальных типов? Я сократил его до минимального образца: public class Foo<T> where T : IComparable { private T _minimumValue = default(T); public bool IsInRange(T value) { return (value >= _minimumValue); // <-- Error here } } Ошибка: Оператор '> =' нельзя применять к операндам типа 'T' и …

8
C # Generics не допускает ограничений типа делегата
Возможно ли определить класс в C # так, чтобы class GenericCollection<T> : SomeBaseCollection<T> where T : Delegate Я не мог, хоть убей, сделать это прошлой ночью в .NET 3.5. Я пробовал использовать delegate, Delegate, Action<T> and Func<T, T> Мне кажется, что это должно быть как-то допустимо. Я пытаюсь реализовать свой …

7
Что означает «Т» в C #?
У меня есть опыт работы с VB, и я перехожу на C # для моей новой работы. Я также пытаюсь улучшить .NET в целом. Я видел, как ключевое слово "T" часто используется в примерах, которые публикуют люди. Что означает буква «T» в C #? Например: public class SomeBase<T> where T …
79 c#  .net  generics 

4
Почему лямбда-тип возврата не проверяется во время компиляции?
Ссылка на используемый метод имеет тип возвращаемого значения Integer. Но несовместимое Stringдопускается в следующем примере. Как исправить withобъявление метода, чтобы получить безопасный тип ссылки на метод без приведения вручную? import java.util.function.Function; public class MinimalExample { static public class Builder<T> { final Class<T> clazz; Builder(Class<T> clazz) { this.clazz = clazz; } …

4
В чем разница между <? расширяет базу> и <T расширяет базу>?
В этом примере: import java.util.*; public class Example { static void doesntCompile(Map&lt;Integer, List&lt;? extends Number&gt;&gt; map) {} static &lt;T extends Number&gt; void compiles(Map&lt;Integer, List&lt;T&gt;&gt; map) {} static void function(List&lt;? extends Number&gt; outer) { doesntCompile(new HashMap&lt;Integer, List&lt;Integer&gt;&gt;()); compiles(new HashMap&lt;Integer, List&lt;Integer&gt;&gt;()); } } doesntCompile() не может скомпилировать с: Example.java:9: error: incompatible types: …

5
Как отловить все варианты универсального исключения в C #
Я хотел бы поймать все варианты универсального класса исключений, и мне было интересно, есть ли способ сделать это без нескольких блоков catch. Например, скажем, у меня есть класс исключения: public class MyException&lt;T&gt; : Exception { public string MyProperty { get; } public MyException(T prop) : base(prop.ToString()) { MyProperty = prop?.ToString(); …
22 c#  generics  exception 

1
Почему параметр типа сильнее параметра метода
Почему public &lt;R, F extends Function&lt;T, R&gt;&gt; Builder&lt;T&gt; withX(F getter, R returnValue) {...} более строгим, чем public &lt;R&gt; Builder&lt;T&gt; with(Function&lt;T, R&gt; getter, R returnValue) {...} Это продолжение того, почему лямбда-тип возврата не проверяется во время компиляции . Я нашел с помощью метода, withX()как .withX(MyInterface::getLength, "I am not a Long") выдает …

3
Выбор сигнатуры метода для лямбда-выражения с несколькими совпадающими типами целей
Я отвечал на вопрос и столкнулся со сценарием, который я не могу объяснить. Рассмотрим этот код: interface ConsumerOne&lt;T&gt; { void accept(T a); } interface CustomIterable&lt;T&gt; extends Iterable&lt;T&gt; { void forEach(ConsumerOne&lt;? super T&gt; c); //overload } class A { private static CustomIterable&lt;A&gt; iterable; private static List&lt;A&gt; aList; public static void main(String[] …
11 java  generics  lambda  javac  ecj 

1
Почему компилятор выбирает этот универсальный метод с параметром типа класса при вызове с несвязанным типом интерфейса?
Рассмотрим следующие два класса и интерфейс: public class Class1 {} public class Class2 {} public interface Interface1 {} Почему второй вызов mandatoryвызывает перегруженный метод с Class2, если getInterface1и Interface1не имеет отношения с Class2? public class Test { public static void main(String[] args) { Class1 class1 = getClass1(); Interface1 interface1 = …

1
Ссылка на метод и обобщение в Java-8
Я столкнулся с проблемой со ссылкой на метод в сочетании с общими типами. У нас есть код, где нам нужно вызвать перегруженный метод, но он завершается ошибкой: Не удается разрешить значение m1 () Я упростил свою проблему, чтобы было ясно, где проблема. Сбой следующего кода: public class Test { void …
11 java  generics  lambda  java-8 

4
Проблема с общими свойствами при отображении типов
У меня есть библиотека, которая экспортирует тип утилиты, подобный следующему: type Action&lt;Model extends object&gt; = (data: State&lt;Model&gt;) =&gt; State&lt;Model&gt;; Этот тип утилиты позволяет вам объявить функцию, которая будет выполнять «действие». Он получает общий аргумент, против Modelкоторого будет действовать действие. Затем dataаргумент «действия» набирается с помощью другого типа утилиты, который я …

4
Выбор метода C # дженериков
Я пытаюсь написать универсальные алгоритмы на C #, которые могут работать с геометрическими объектами различной размерности. В следующем надуманном примере я Point2и Point3оба реализую простой IPointинтерфейс. Теперь у меня есть функция, GenericAlgorithmкоторая вызывает функцию GetDim. Существует несколько определений этой функции в зависимости от типа. Существует также резервная функция, которая определена …
9 c#  generics 

2
C # не может сделать тип `notnull` обнуляемым
Я пытаюсь создать тип, похожий на Rust Resultили Haskell, Eitherи я дошел до этого: public struct Result&lt;TResult, TError&gt; where TResult : notnull where TError : notnull { private readonly OneOf&lt;TResult, TError&gt; Value; public Result(TResult result) =&gt; Value = result; public Result(TError error) =&gt; Value = error; public static implicit operator …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.