|
|
1
8
重载成员、索引器和显式接口实现可能会出现一些问题。 但是,您可能可以以一种允许您解决这些问题的方式定义语法。 有趣的是,通过编写一个库,你可以非常接近你想要的C 3.0。基本上,你可以这样做:
很接近你想要的。主要的区别是调用“create”而不是“new”关键字,以及需要指定委托类型的事实。 “create”的声明如下:
然后它将使用reflection.emit在运行时动态生成接口实现。 然而,这种语法确实存在显式接口实现和重载成员的问题,如果不更改编译器,就无法解决这些问题。 另一种选择是使用集合初始值设定项,而不是匿名类型。就像这样:
这将使您能够:
您需要做一些事情来实现这一点:
|
|
|
2
6
它需要C 4,但是OpenSource框架 impromptu interface 可以在内部使用DLR代理进行开箱即用的伪造。性能很好,尽管不如您提议的变更那样好。
…
|
|
|
3
4
除了具有只读属性外,不能使匿名类型执行任何操作。 引用 C# Programming Guide (Anonymous Types) :
|
|
|
4
2
只要我们列出一个接口愿望列表,我真的想告诉编译器一个类实现了类定义之外的接口——即使是在一个单独的程序集中。 例如,假设我正在开发一个程序,从不同的存档格式中提取文件。我希望能够从不同的库(例如,sharpziplib和商业的pgp实现)中引入现有的实现,并且在不创建新类的情况下使用相同的代码来使用这两个库。例如,我可以在泛型约束中使用来自任意一个源的类型。
另一种用法是告诉编译器
这也可以用来实现您的请求,只是不能自动实现。您仍然需要明确地告诉编译器关于它的信息。不确定语法的外观,因为您仍然需要手动将方法和属性映射到某个地方,这意味着需要大量的措辞。可能和扩展方法类似。 |
|
|
5
1
你可以吃点类似的东西 anonymous classes 在Java中:
|
|
|
6
1
这不是很酷吗?内联匿名类:
|
|
|
7
1
我要把这个扔到这里。我刚才写的,但是我觉得它可以用。
首先是一个助手函数
现在,该方法将一个接口作为泛型参数,并返回
您可以将其用作例如
|
|
|
8
0
有趣的想法,我会有点担心,即使可以做到,它可能会变得混乱。例如,在定义具有重要setter和getter的属性时,或者在声明类型还包含名为foo的属性时如何消除foo的歧义。 我想知道,在更动态的语言中,这是否更容易,甚至在C 4.0中使用动态类型和DLR? 也许在今天的C部分意图可以通过兰姆达斯实现:
|
|
|
9
-1
这在目前是不可能的。 这和简单地将ifoo变成一个具体的类有什么区别?似乎这是更好的选择。 需要什么?一个新的编译器和大量的检查以确保它们不会破坏其他特性。就个人而言,我认为要求开发人员只创建类的具体版本会更容易。 |
|
|
10
-1
我在Java中使用了“新iFoO()”{ }},这是一个非常有趣的类,当你必须快速实现一个简单的接口时,它是实用的和简单的。 作为一个示例,在 遗产 刚刚使用的对象 一次 而不是派生一个新的类来实现它。 |
|
|
George S. · 是否存在基于元组的控制流语句内部表示? 7 年前 |
|
FlatAssembler · 在x86程序集中计算exp(x) 7 年前 |
|
|
cib · 即时编译和动态编译有什么区别? 7 年前 |
|
|
Artemis · 寄存器与指令之间的差异 7 年前 |
|
|
Sam · 了解go工具编译和链接命令 8 年前 |