相关疑难解决方法(0)

用于匹配数字类型的通用约束

我正在尝试在数字类型上编写一个扩展方法,以便在我正在构建的流畅测试框架中使用.基本上,我想这样做:

public static ShouldBeGreaterThan<T>(this T actual, T expected, string message)
    where T : int || T: double || etc...
Run Code Online (Sandbox Code Playgroud)

只是where T : struct不这样做,因为这也将匹配stringbool,可能别的东西,我忘了.有什么我可以做的只匹配数字类型?(实现的具体类型><运营商,这样我就可以对它们进行比较.如果这意味着我匹配日期为好,它其实并不重要-扩展仍然会做我的期望.)

c# generics numeric

78
推荐指数
5
解决办法
4万
查看次数

方法推断不适用于方法组

考虑

void Main()
{
    var list = new[] {"1", "2", "3"};
    list.Sum(GetValue); //error CS0121
    list.Sum(s => GetValue(s)); //works !
}

double GetValue(string s)
{
    double val;
    double.TryParse(s, out val);
    return val;
}
Run Code Online (Sandbox Code Playgroud)

CS0121错误的描述是

以下方法或属性之间的调用是不明确的: 'System.Linq.Enumerable.Sum<string>(System.Collections.Generic.IEnumerable<string>, System.Func<string,decimal>)''System.Linq.Enumerable.Sum<string>(System.Collections.Generic.IEnumerable<string>, System.Func<string,decimal?>)'

我不明白的是,什么信息s => GetValue(s)给编译器根本GetValue不-不是前者,后者的语法糖?

c# type-inference .net-4.0 method-group

11
推荐指数
2
解决办法
1762
查看次数

如何验证类型是否重载/支持某个运算符?

如何检查某种类型是否实现某个运算符?

struct CustomOperatorsClass
{
    public int Value { get; private set; }


    public CustomOperatorsClass( int value )
        : this()
    {
        Value = value;
    }

    static public CustomOperatorsClass operator +(
        CustomOperatorsClass a, CustomOperatorsClass b )
    {
        return new CustomOperatorsClass( a.Value + b.Value );
    }
}
Run Code Online (Sandbox Code Playgroud)

以下两次检查应返回true:

typeof( CustomOperatorsClass ).HasOperator( Operator.Addition )
typeof( int ).HasOperator( Operator.Addition )
Run Code Online (Sandbox Code Playgroud)

c# reflection operators

9
推荐指数
2
解决办法
1983
查看次数

如何实现通用方法以对不同的值类型进行数学计算

我有一个接受IEnumerable-decimals并执行各种数学函数的方法。我想对IEnumerable-int-使用相同的方法。我该如何实施?例如找到一个简单的总和?

void Calculate<T>(IEnumerable <T> ListOFNumbers)
{
   int count= ListofNumbers.Count();
   ?sum=?;
}
Run Code Online (Sandbox Code Playgroud)

c# generics

5
推荐指数
1
解决办法
3575
查看次数