我是 C# 的新手,我想多学一点……现在,我在理解静态 ArrayList 时遇到了麻烦。
在 php 中我可以定义:
Class Singleton{
private static $instance;
private static $arrayDemo = array();
private function __construct(){}
public static function getInstance(){
if(!isset(self::$instance))
self::$instance = new Singleton();
return self::$instance;
}
public static addItem($item){
self::$arrayDemo[] = $item;
}
public static getItems(){
return self::$arrayDemo[];
}
}
Singleton::getInstance();
Singleton::addItem("first");
Singleton::addItem("second");
Singleton::getItems(); // returns {0=>first,1=>second}
如果我重新加载页面,我会得到相同的结果(0=>first,1=>second)
我试图在 c# 中实现单例模式以获得相同的东西,但我得到了重复的值:
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
private static ArrayList ArrayDemo = new ArrayList();
private Singleton() { }
public static Singleton Instance
{
get
{
return instance;
}
}
public static void AddItem(string item)
{
ArrayDemo.Add(item);
}
public static ArrayList GetItems()
{
return ArrayDemo;
}
}
//in cshtml:
Singleton.AddItem("first");
Singleton.AddItem("second");
Singleton.GetItems();
如果我刷新网站一次,我得到与 php 相同的结果......但是,如果我刷新它 3 次返回......:
0=>first,1=>second,2=>first,3=>second,4=>first,5=>second
为什么会发生这种情况?如果我使用静态方法,我可以清除 ArrayList 结果刷新吗?我只是想了解这其中的逻辑。
多谢你们!。