.net-: ,.net .
, :
public abstract class A<T> where T : A<T>
{
protected static int myVariable { get; set; }
}
:
public class B : A<B>
{
public B()
{
myVariable = 1;
}
public int GetVariable()
{
return myVariable;
}
}
public class C : A<C>
{
public C()
{
myVariable = 2;
}
public int GetVariable()
{
return myVariable;
}
}
B myVariable, C .
, Set(int a):
public void Set(int a)
{
myVariable = a;
}
:
static void Main(string[] args)
{
B b1 = new B();
C c1 = new C();
B b2 = new B();
C c2 = new C();
Console.Write("{0}; ", b1.GetVariable());
Console.Write("{0}; ", b2.GetVariable());
Console.Write("{0}; ", c1.GetVariable());
Console.Write("{0}; ", c2.GetVariable());
Console.WriteLine();
c2.Set(333);
Console.Write("{0}; ", b1.GetVariable());
Console.Write("{0}; ", b2.GetVariable());
Console.Write("{0}; ", c1.GetVariable());
Console.Write("{0}; ", c2.GetVariable());
Console.ReadLine();
}
: 1; 1; 2; 2;
1; 1; 333; 333;.