Вы можете использовать статическое поле.Но, очевидно, как только вы это сделаете, вам нужно синхронизировать доступ к нему, потому что класс List<T>
не является поточно-ориентированным:
public class TestService : ITestService {
private static List<TestClass> cl;
private static object _syncRoot = new object();
static TestService()
{
cl = new List<TestClass>();
TestClass tc = new TestClass(5);
cl.Add(tc);
}
public void Diminish(int x)
{
lock (_syncRoot)
{
cl[0].Value -= x;
}
}
public TestClass ReturnValue(int p)
{
lock (_syncRoot)
{
return cl[p];
}
}
}
, или вы также можете использовать класс SynchronizedCollection<T>
что потокобезопасно:
public class TestService
{
private static SynchronizedCollection<TestClass> cl;
static TestService()
{
cl = new SynchronizedCollection<TestClass>();
TestClass tc = new TestClass(5);
cl.Add(tc);
}
public void Diminish(int x)
{
cl[0].Value -= x;
}
public TestClass ReturnValue(int p)
{
return cl[p];
}
}