Я новичок в C #, просто вопрос по статическому полю.
Допустим, у нас есть следующий класс:
class SavingsAccount
{
public double currBalance;
// A static point of data.
public static double currInterestRate = 0.04;
public SavingsAccount(double balance)
{
currBalance = balance;
}
// Static members to get/set interest rate.
public void SetInterestRate(double newRate)
{
currInterestRate = newRate;
}
public static double GetInterestRate()
{
return currInterestRate;
}
}
...
static void Main(string[] args)
{
SavingsAccount s1 = new SavingsAccount(50);
Console.WriteLine("Interest Rate is: {0}", SavingsAccount.GetInterestRate());
s1.SetInterestRate(0.09);
SavingsAccount s2 = new SavingsAccount(100);
Console.WriteLine("Interest Rate is: {0}", SavingsAccount.GetInterestRate());
Console.ReadLine();
}
и вывод:
Interest Rate is: 0.04
Interest Rate is: 0.09
Я понимаю, что статические поля применяются на уровне класса, но когда мы создаем s2:
SavingsAccount s2 = new SavingsAccount(100);
не правда ли public static double currInterestRate = 0.04;
сбросить currInterestRate обратно на 0,04? почему 0,09? что делает CLR, чтобы он не сбрасывался?