Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将带参数的方法传递给另一个方法_C#_Function - Fatal编程技术网

C# 如何将带参数的方法传递给另一个方法

C# 如何将带参数的方法传递给另一个方法,c#,function,C#,Function,我试图建立一个数据矩阵,它包含一个对象列表。下面是我想做的: List<IBasePremium> BasePremiumMatrix = new List<IBasePremium>(); List<ICalcRate> calcRates = new List<ICalcRate> { new CalcRate { BasePremiumType = 1, Rate = basePremiumRate.Building, Calc =

我试图建立一个数据矩阵,它包含一个对象列表。下面是我想做的:

List<IBasePremium> BasePremiumMatrix = new List<IBasePremium>();
List<ICalcRate> calcRates = new List<ICalcRate>
{
    new CalcRate { BasePremiumType = 1, Rate = basePremiumRate.Building, Calc = basePremiumRate.Building },
    new CalcRate { BasePremiumType = 2, Rate = basePremiumProduct.Building,Calc = calculator.BasePremium(basePremiumProduct.Building,basePremiumRate.Building) }
   // new CalcRate { BasePremiumType = 3, Rate = (decimal)postcodeMultiplier.BuildingsCore  ,Calc = calculator.BasePremium(postcodeMultiplier.BuildingsCore,  ) },
};
List BasePremiumMatrix=new List();
列表calcRates=新列表
{
新的CalcRate{BasePremiumType=1,Rate=basePremiumRate.Building,Calc=basePremiumRate.Building},
新的CalcRate{BasePremiumType=2,Rate=basePremiumProduct.Building,Calc=calculator.BasePremium(basePremiumProduct.Building,basePremiumRate.Building)}
//新的CalcRate{BasePremiumType=3,Rate=(十进制)PostCode乘数.BuildingCore,Calc=calculator.BasePremium(PostCode乘数.BuildingCore,)},
};
在注释掉的代码行中,作为第二个参数,我确实希望传递前一行代码中的“Calc”值。我有很多这样的行,我需要传递前面的“Calc”值来构建矩阵。上述方法显然是错误的,我认为我可以编写一个类似以下形式的方法:
public CalcRate乘数(Func,int basePremiumType,十进制率){….}


但是我正在努力传递方法名及其参数值。

创建和操作或函数:

Action customAction = ()=> yourFunctionName(param1, param2);
然后将其传递给乘法器

var calcul = Multiplier(customAction , ....);

创建和操作或函数:

Action customAction = ()=> yourFunctionName(param1, param2);
然后将其传递给乘法器

var calcul = Multiplier(customAction , ....);
打个循环怎么样

List<IBasePremium> BasePremiumMatrix = new List<IBasePremium>(); 
List<ICalcRate> calcRates = new List<ICalcRate>();
for (int i = 1; i < max; i++) {
    CalcRate rate = new CalcRate { BasePremiumType = i , Rate = basePremiumRate.Building };
    if ( i > 1) { 
        rate.Calc = calcRates.get(i - 2)
    } else {
        rate.Calc = calculator.BasePremium(basePremiumProduct.Building,basePremiumRate.Building);
    } 
    calcRates.add(rate);
} 
List BasePremiumMatrix=new List();
列表calcRates=新列表();
对于(int i=1;i1){
rate.Calc=calcRates.get(i-2)
}否则{
rate.Calc=calculator.BasePremium(basePremiumProduct.Building,basePremiumRate.Building);
} 
添加(费率);
} 
for循环怎么样

List<IBasePremium> BasePremiumMatrix = new List<IBasePremium>(); 
List<ICalcRate> calcRates = new List<ICalcRate>();
for (int i = 1; i < max; i++) {
    CalcRate rate = new CalcRate { BasePremiumType = i , Rate = basePremiumRate.Building };
    if ( i > 1) { 
        rate.Calc = calcRates.get(i - 2)
    } else {
        rate.Calc = calculator.BasePremium(basePremiumProduct.Building,basePremiumRate.Building);
    } 
    calcRates.add(rate);
} 
List BasePremiumMatrix=new List();
列表calcRates=新列表();
对于(int i=1;i1){
rate.Calc=calcRates.get(i-2)
}否则{
rate.Calc=calculator.BasePremium(basePremiumProduct.Building,basePremiumRate.Building);
} 
添加(费率);
} 

从我的原始问题中可以看出,我的函数名是_calculator.BasePremium,它需要传递两个十进制值。当我按照您的示例声明一个操作时,我必须在声明该操作时首先传递2位小数。然后,我创建了一个方法,根据第二行模拟对乘数的调用。在乘法器方法中,我在将Calc设置为customActionOk时遇到问题,看起来好像
Action
用于void类型,而
Func
用于返回类型的方法。我的函数有一个返回类型,所以我需要使用
Func
——但仍然没有更接近。从我最初的问题中可以看出,我的函数名是\u calculator.BasePremium,它需要传递两个十进制值。当我按照您的示例声明一个操作时,我必须在声明该操作时首先传递2位小数。然后,我创建了一个方法,根据第二行模拟对乘数的调用。在乘法器方法中,我在将Calc设置为customActionOk时遇到问题,看起来好像
Action
用于void类型,而
Func
用于返回类型的方法。我的有一个返回类型,所以我需要使用
Func
——但仍然没有更接近。这不会在每次迭代中作为不同对象的Rate get设置起作用,也不会在每次迭代中作为不同对象的Rate get设置起作用