gpt4 book ai didi

c# - C# 是否具有与 Scala 的结构类型相同的功能?

转载 作者:IT王子 更新时间:2023-10-29 04:49:06 27 4
gpt4 key购买 nike

在 Scala 中,我可以定义 structural types如下:

type Pressable = { def press(): Unit }

这意味着我可以定义一个函数或方法,它将某些可按下的东西作为参数,如下所示:

def foo(i: Pressable) {//等等

我传递给这个函数的对象必须为它定义了一个名为 press() 的方法,该方法与类型中定义的类型签名相匹配 - 不带参数,返回 Unit(Scala 的 void 版本)。

我什至可以使用内联结构类型:

def foo(i: { def press(): Unit }) {//等等

它基本上允许程序员拥有鸭子类型(duck typing)的所有好处,同时仍然有编译时类型检查的好处。

C# 有类似的东西吗?我用谷歌搜索但找不到任何东西,但我对 C# 的任何深度都不熟悉。如果没有,是否有添加此功能的计划?

最佳答案

没有,据我所知没有计划。仅命名(而不是结构)子类型(例如接口(interface))。

(其他人可能也想看

http://en.wikipedia.org/wiki/Nominative_type_system

http://en.wikipedia.org/wiki/Structural_type_system

)

(有些人可能会指出一些奇特的极端情况,例如 foreach 语句使用 GetEnumerator 的结构类型,但这是 exception 而不是规则.)

关于c# - C# 是否具有与 Scala 的结构类型相同的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2831175/

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