gpt4 book ai didi

c# - c++0x 概念和 c# 约束有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:25 25 4
gpt4 key购买 nike

C++0x 引入了概念,让您基本上可以定义一种类型。 It specifies the properties required of a type .

C# 允许您使用“ where ”子句指定泛型的约束

它们之间有语义上的区别吗?

谢谢。

最佳答案

要记住的一件事是 C++ 模板和 C# 泛型并不完全相同。看这个answer有关这些差异的更多详细信息。

从您链接到解释 C++0x 概念的页面来看,听起来您的想法是在 C++ 中您希望能够指定模板类型实现某些属性。在 C# 中,约束更进一步,并强制泛型类型“属于”该约束。例如,以下 C# 代码:

public GenericList<T> where T : IDisposable

表示用于代替 T 的任何类型必须实现 IDisposable 接口(interface)。同样,下面的代码:

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

public GenericList<T> where T : ABC

表示任何用于代替 T 的类型都必须是 ABC 类型或派生自 ABC。

C++0x 概念思想仅表示用于代替 T 的类型必须具有与 ABC(或 IDisposable)定义的相同的属性,而不是它必须属于该类型。

关于c# - c++0x 概念和 c# 约束有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com