【发布时间】:2012-10-23 06:10:40
【问题描述】:
我是 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=>第一,1=>第二)
我试图在 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 结果刷新吗? 我只是想了解一下其中的逻辑。
谢谢大家!
【问题讨论】:
-
这就是问题所在:php 不知道 real 静态实例 :) 见 stackoverflow.com/questions/468642/… 和 stackoverflow.com/questions/432192/singleton-in-php
-
@AndreasNiedermair 随着我对 C# 的了解越来越多,我觉得我在 php 世界中失去了 5 年 :(