只是一个想法。

不会使其具有在C#可选类型参数是有用的?

这将使生活更简单。我累了具有相同的名称,但不同类型的参数多类。另外VS不支持这个非常贝尔(文件名): - )

这将例如消除需要一个非通用的IEnumerable:

interface IEnumerable<out T=object>{
  IEnumerator<T> GetEnumerator()
}

你怎么认为呢?

有帮助吗?

解决方案

我肯定是它。

我目前正在写于不同的场合,我想传递给不同的成员和类的方法引用的辅助方法。为了实现这一点,我服用,例如,一个Expression<Func<TIn, TOut>>作为参数向所述辅助(即让我到达法lambda表达式,因此保持一切强类型)。

BUT - 我目前需要定义一种新的辅助方法为每个不同数量的输入参数,因为我需要有不同量的通用参数给它。代替

HelperMethod<TIn>(Expression<Action<TIn>> arg) // Yes, C# can distinguish
HelperMethod<TOut>(Expression<Func<TOut>> arg) // these two from eachother
HelperMethod<TIn, TOut>(Expression<Func<TIn, TOut>> arg)
HelperMethod<TIn1, TIn2, TOut>(Expression<Func<TIn1, TIn2, TOut>> arg)
// etc

我可以凑合着用,顶多两个方法:

HelperMethod<TIn>(Expression<Action<TIn>> arg)
HelperMethod<TOut, TIn1 = DummyType, ...>(Expression<Func<TIn1, ..., TOut> arg)

在我的情况下,它会避免很多重复代码...

其他提示

什么是这个语言功能主要使用?我可以看到,它可以与喜欢的文件名,少打字等,但除此之外,我不知道这是多么有用会。

一些管理任务帮助

此外,该特征将显著复杂化的是可以被放置在一般类型参数和默认类型本身必须功能作为一种通用约束本身的任何通用的约束。

我认为这将没有提供任何实际的好处给开发者的语言复杂化。

目前还不清楚我究竟你提议。目前可能有类型名称相同,但不同类型的参数,但是这是不以任何方式继承关系 - 你会有什么建议做呢

此外,如果基类库是从根本上重新设计,几乎可以肯定会有非通用IEnumerable接口 - 它只是存在,因为引入该接口时,CLR不支持泛型和通用接口从它继承只有让旧代码将继续工作。正在为CLR它不支持泛型创建新声明的类,因此这个问题已经不再重要。

我最近碰到的是也可以使用像这样的情况下,只是不太。我有一个方法,该方法进行各种各样的变换,A类和与其关联的类和AChild B类和类BChild之间。通常情况下,所述一对A / AChild的相同,B / BChild,但有时A是一个基类B和AChild基类BChild的。

这本来是很高兴能够说,我喜欢的类型参数TB默认为TA,那TBChild默认为TAChild。

请注意,这是在其中有必要写出来的类型参数的情况下,作为推理是行不通的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top