如果我自己实现IEnumerator接口,那么我能够(内部foreach语句)在albumsList不产生异常的情况下添加或删除项目.但是如果foreach语句使用了IEnumerator提供的albumsList,那么尝试添加/删除(在foreach内部)项目albumsList将来自导致异常:
class Program
{
static void Main(string[] args)
{
string[] rockAlbums = { "rock", "roll", "rain dogs" };
ArrayList albumsList = new ArrayList(rockAlbums);
AlbumsCollection ac = new AlbumsCollection(albumsList);
foreach (string item in ac)
{
Console.WriteLine(item);
albumsList.Remove(item); //works
}
foreach (string item in albumsList)
{
albumsList.Remove(item); //exception
}
}
class MyEnumerator : IEnumerator
{
ArrayList table;
int _current = -1;
public Object Current
{
get
{
return …Run Code Online (Sandbox Code Playgroud) 这个问题我已经在脑海里喋喋不休了一段时间.那天晚上我和一个人聊了聊,他告诉我他不会使用导航框架,因为他无法弄清楚它是如何与MVVM一起工作的.尽管我试图解释模式应该用一点盐,他不会听.
我的观点是,当他们解决一些问题时,模式很棒.有时只有部分模式解决了特定问题,而其他部分则导致不同的问题.任何开发人员的目标都是使用模式知识和远见的组合构建一个可靠的应用程序.
我觉得MVVM正在成为统治它们的一种模式.由于.Net没有直接支持,因此需要一些奇特的业务来使其工作.我觉得人们忽略了模式的重点,这是松散耦合,可测试的代码,而是跳过篮球,错过了尝试跟随MVVM的伟大经历.
MVVM很棒,但我希望它能为新手带来警告或免责声明,因为我担心人们会因为害怕被mvvm棒击中而回避Silverlight的发展.
编辑:我可以添加作为编辑,我使用并同意MVVM作为我知道的模式,在我的项目中是不可行的.我的问题在于它所具有的包容性,好像它必须被用作发展的一部分.它被用作一个整体特征,而不是一个模式,它是.
编辑2:感谢到目前为止的所有评论,一个问题出现的问题是我到目前为止没有想到的.是否为GUI/RIA开发引入了更丰富更先进的框架,显示出这一代RAD开发的弱点.也就是说,是否缺乏与这些框架一起教授的代码设计和模式知识?我曾经问过一本关于C#的书(在Pro C#和.Net框架之前很受欢迎)并被告知我为什么要知道C#minus winforms/asp.
当然有很多关于这些主题的书籍/ KB,但除了超级巨星和非常优秀的程序员之外,还有人使用它们吗?
为什么我的page.xml文件没有改变主页的布局?它会更改其他页面的布局,但不会更改主页的布局.主页是否有自己的布局xml文件?
我想知道在一个只通过上下文(右键单击)菜单可供用户使用的软件中提供某些功能是否合理.似乎在我使用右键菜单的大多数软件中,总是使用快速方式来获取其他按钮或菜单提供的功能.
下面是我正在开发的UI的屏幕截图.右侧的树视图显示了用户的目录库.用户可以创建新目录,或在库中添加和删除现有目录.然后可以打开或关闭其库中的目录,或将其设置为只读.

屏幕截图显示了我为浏览器创建的上下文菜单.某些命令可以独立于任何特定目录(New,Add)执行.但是其他命令必须应用于特定选择的目录(关闭,打开,删除,只读,刷新,清理,重命名).
目前,窗口顶部的"目录"菜单看起来与此上下文菜单相同.然而,我认为这可能会让用户感到困惑,因为显示当前所选目录的树视图可能并不总是可见.用户可能已切换到"搜索"或"过滤器"选项卡,或者左窗格可能完全隐藏.
但是,我对更改UI非常犹豫,因此依赖于特定选定目录的命令只能通过上下文菜单使用.
如何检查View内部是否存在特定键的任何ModelState错误(键是模型的字段键)
Java中是否存在用于稀疏位向量的任何着名库?
(并且有没有指导稀疏对于使用它们与java.util.BitSet有什么用?)
我有这门课:
class A {
private:
int player;
public:
A(int initPlayer = 0);
A(const A&);
A& operator=(const A&);
~A();
void foo() const;
};
Run Code Online (Sandbox Code Playgroud)
我有包含这一行的函数:
A *pa1 = new A(a2);
Run Code Online (Sandbox Code Playgroud)
有人可以解释究竟发生了什么,当我调用A(a2)编译器调用复制构造函数或构造函数时,请提前感谢
我必须在PHP中反序列化使用Python中的cPickle序列化的字典.
在这个特定情况下,我可能只是想要获取所需信息,但是有更好的方法吗?PHP的任何扩展都允许我在整个字典中更加原生地反序列化?
显然它在Python中被序列化,如下所示:
import cPickle as pickle
data = { 'user_id' : 5 }
pickled = pickle.dumps(data)
print pickled
Run Code Online (Sandbox Code Playgroud)
这种序列化的内容不能轻易粘贴到此处,因为它包含二进制数据.
由于Python结尾是Django,我最终创建了自己的JSONSessionStore.
我在Visual Studio工具链中使用了一个Windows批处理文件,它在特定目录中创建了一个文件列表,然后使用"findstr"将此列表缩小到只包含名称包含特定字符串的文件; 然后对这些文件做一些工作.
dir /b \mypath\*.wav >wavRawList.txt
findstr /b /v "DesiredString" wavRawList.txt >wavListWithDesiredString.txt
for /f %%a in (wavListWithDesiredString.txt) do (
[... do some stuff ...]
)
Run Code Online (Sandbox Code Playgroud)
Visual Studio经常报告来自这个批处理文件的错误,我认为这是因为wavListWithDesiredString.txt经常最终成为长度为0的文件.是否有各种各样的"if exists wavListWithDesiredString.txt"而不是"存在"我可以替换命令意味着"如果它存在且文件长度大于0"?
asp.net-mvc ×1
batch-file ×1
bitvector ×1
c# ×1
c++ ×1
git ×1
git-stash ×1
ienumerable ×1
java ×1
json ×1
magento ×1
mvvm ×1
php ×1
pickle ×1
python ×1
silverlight ×1
sparse-array ×1
validation ×1