TGViewer
SpellSinger - разработчик игр на Unity SpellSinger - разработчик игр на Unity @spellsingergames · 548 subscribers
Post #49 511
Моя боль от дженериков в C# – отсутствие wildcards

Почему, ну почему в C# нет возможности писать <? extends T>? Это же супер удобно в Java. Приведу пример, который работает в Java, но который я не могу повторить на C#:
abstract class Factory<TProduct> {
public int counter;
public abstract TProduct make();
}
class Product<TItem> {
private final Factory<? extends Product<TItem>> factory;
protected Product(Factory<? extends Product<TItem>> factory) {
this.factory = factory;
factory.counter++;
}
public void destroy() {
factory.counter--;
}
}
class FloatFactory extends Factory<FloatProduct> {
@Override
public FloatProduct make() {
return new FloatProduct(this);
}
}
class FloatProduct extends Product<Float> {
protected FloatProduct(FloatFactory factory) {
super(factory);
}
}

На С# не получается:

abstract class Factory<TProduct>
{
public int counter;
public abstract TProduct Make();
}
class Product<TItem>
{
private readonly Factory<Product<TItem>> factory;
protected Product(Factory<Product<TItem>> factory)
{
this.factory = factory;
factory.counter++;
}
public void Destroy()
{
factory.counter--;
}
}
class FloatFactory : Factory<FloatProduct>
{
public override FloatProduct Make()
{
return new FloatProduct(this);
// Argument type 'ConsoleApp1222.FloatFactory' is not assignable to parameter type 'ConsoleApp1222.Factory<ConsoleApp1222.Product<float>>'
}
}
class FloatProduct : Product<float>
{
public FloatProduct(FloatFactory factory) : base(factory)
{
}
}


#нерешенное
  • 🤝 2
More from @spellsingergames
  1. Oct 1, 2026Автор
  2. Aug 31, 2026Post #235
  3. Aug 25, 2026Прошли модерацию на Crazy Games. Basic Launch продлится до 15 сентября или пока не наберет…
  4. Aug 24, 2026А мы, тем временем, идём покорять #crazy_games Вчера ночью отправили билд на модерацию. Мо…
  5. Aug 24, 20262 недели нужно рекоммендеру Яндекс игр, чтобы как-то отреагировать на изменения метрик. AR…
  6. Aug 14, 2026Шестой эпизод подкаста ГЕЙМДЕВ ПОД ПИВОМ уже во вторник, в 22:30МСК! Хорошенечко отоспитес…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →