В чем разница между концепциями c ++ 0x и ограничениями c #?

StackOverflow https://stackoverflow.com/questions/497766

Вопрос

C ++ 0x вводит концепции, которые позволяют вам определить, по сути, тип типа. Он определяет свойства, требуемые от типа.

C # позволяет вам указать ограничения общего вида с "где" оговорка.

Есть ли какая-то смысловая разница между ними?

Спасибо.

Это было полезно?

Решение

Следует иметь в виду, что шаблоны C ++ и дженерики C # - это не совсем одно и то же.Видишь это ответ для получения более подробной информации об этих различиях.

Судя по странице, на которую вы ссылаетесь, объясняющей концепции C ++ 0x, идея заключается в том, что в C ++ вы хотите иметь возможность указать, что тип шаблона реализует определенные свойства.В C # ограничение идет дальше этого и заставляет универсальный тип быть "из" этого ограничения.Например, следующий код на C #:

public GenericList<T> where T : IDisposable

говорит, что любой тип, используемый вместо T должен реализуйте интерфейс IDisposable.Аналогично, следующий код:

public abstract class ABC {}
public class XYZ : ABC {}

public GenericList<T> where T : ABC

говорит, что любой тип, используемый вместо T, должен быть типа ABC или производным от ABC.

Идея концепции C ++ 0x гласит только о том, что тип, используемый вместо T, должен обладать теми же свойствами, что определены ABC (или IDisposable), а не о том, что он должен быть этого типа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top