我在方法GetDays
中设置了一个int值,然后我想在GetRiskAssement()
中使用此值,但是一旦我返回此方法,它将立即更改为默认值0。
我想设置intDays
并使其保持不变,直到再次运行GetDays
方法。
public class RiskA
{
int accountId;
static int intDays;
bool stop;
List<int> DateVehicleList = new List<int>();
public List<DisplayableRiskAssement> DisplayableRiskAssement { get; private set; }
public RiskAssement()
{
accountId = 461;
DisplayableRiskAssement = GetRiskAssement();
}
List<DisplayableRiskAssement> GetRiskAssement()
{
//Additional code here than runs through a load of records
if(riskAssement.InUK == false)
{
GetVehiclesNotInUK(riskAssement.VehicleID);
riskAssement.IntDaysSinceUK = intDays;
}
return riskAssesments;
}
protected void GetVehiclesNotInUK(int VehicleID)
{
//Code here that creates DateVehicleList
GetDays(DateVehicleList, intDays);
}
private static int GetDays(List<int> DateVehicleList, int intDays)
{
using (aEntities db = new aEntities())
{
foreach (var item in DateVehicleList)
{
var qryDate = (from a in db.ev
where a.evID == item
select a.sysdatetime).Single();
string strDate = qryDate.ToString();
DateTime oldDate = DateTime.Parse(strDate);
TimeSpan t = DateTime.Now - oldDate;
double doubleDays = t.TotalDays;
intDays = Convert.ToInt32(doubleDays);
}
}
DateVehicleList.Clear();
return intDays;
}
}
答案 0 :(得分:0)
您的方法GetDays
应该作用于类变量,而不是要传递的参数。
如果您希望该方法使用类变量,只需从该方法中删除参数即可:
private static int GetDays(){...}
答案 1 :(得分:0)
在C#中,可以通过值或引用将参数传递给参数。对于您的 GetDays 方法,您已通过引用传递了 DateVehicleList ,并通过值传递了 intDays 。除非您在其中分配了返回的值,否则之前来自类对象的 intDays 值将不会更新。
protected void GetVehiclesNotInUK(int VehicleID)
{
//Code here that creates DateVehicleList
intDays = GetDays(DateVehicleList, intDays);
}
不是,它会按您的预期工作,干杯!
答案 2 :(得分:0)
int是Primitive类型的,因此默认情况下为0。因此,在初始化对象时,构造函数将调用GetRiskAssement()方法,并且该方法使用的intDay仍未在GetDays()方法中设置,因此它返回0到您。 您可以将intDay用作类属性,并对其进行getter和setter,而getDays()方法将对您的类属性而不是参数起作用。
private static int intDay;
public static int getIntDay()
{
return intDay;
}
public static void setIntDay(int intDay)
{
this.intDay = intDay;
}
您的函数应该看起来像
private static int GetDays()
{
//your code goes here
}
希望这对您有所帮助。