我一直在用Reflector查看.NET的List和ArrayList实现.
当看到Add(T项目)时,我碰到了这个.EnsureCapacity(this._size + 1):
public void Add(T item)
{
if (this._size == this._items.Length)
{
this.EnsureCapacity(this._size + 1);
}
this._items[this._size++] = item;
this._version++;
}
Run Code Online (Sandbox Code Playgroud)
所以EnsureCapacity看起来像这样:
private void EnsureCapacity(int min)
{
if (this._items.Length < min)
{
int num = (this._items.Length == 0) ? 4 : (this._items.Length * 2);
if (num < min)
{
num = min;
}
this.Capacity = num;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么内部容量默认为4,然后以2的倍数递增(即:double)?
在C中,我有这个代码片段:
int a;
a = 10 + 5 - 3
Run Code Online (Sandbox Code Playgroud)
我想问一下:(10 + 5-3)存放在哪里?(据我所知,a位于堆栈上,怎么样(10+5-3)?这个rvalue如何计算?)
在c#中,我试图实现一个方法,我可以使用它将数据绑定到我传递给它的任何控件(当然,控件是从数据绑定控件对象派生的)
给定方法
public void CTLBindData(ref DataBoundControl ctl){ ... }
Run Code Online (Sandbox Code Playgroud)
尝试将派生控件传递给函数时出现错误
,例如以下代码
DropDownList lister = new DropDownList();
CTLBindData(ref lister);
Run Code Online (Sandbox Code Playgroud)
生成转换错误
好的我可以接受,但以下让我困惑(可能是因为我习惯了c ++而不是c#)
CTLBindData(ref (DataBoundControl)lister);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我得到错误"一个ref或out参数必须是一个可赋值的变量"
为了澄清,Dropdownlist继承自继承DataBoundControl的列表控件
这对我来说没有任何意义我应该能够传递任何从数据绑定控件派生的对象.似乎显式的类型转换导致了这个问题.
关于我做错了什么的线索?
DC
在C#中获取文件物理路径的最佳方法是什么?
更新:
我有一个文件名,但我不想硬编码它的路径,因为它可能会改变.我只知道它的相对路径,但不知道它的物理路径.
我正在使用pygame和pyro在python中开发一个项目.我可以轻松地发送数据,函数,类等.但是,我不能在电线上发送表面而不会在运输途中死亡.
服务器在def __init__通过网络访问的类中创建一个表面:
self.screen = pygame.display.set_mode(SCREENRECT.size, NOFRAME)
Run Code Online (Sandbox Code Playgroud)
在服务器上,屏幕打印为Surface(800x800x32 SW),但当客户端检索时,它是Surface(Dead Display).
值得注意的是.当我使用访问器功能来获取我的屏幕时,我得到一个死显示.如果我print Player.screen用来获取变量,我会得到一个似乎是指向屏幕的pyro指针:<Pyro.core._RemoteMethod instance at 0x02B7B7B0>.也许我可以解除这个?
我很可能很厚,有没有人有一些见解?谢谢.:)
我发现facebook使用什么称为大表.有没有办法在我使用的应用程序中使用这个"大表"数据库?
你能建议一个算法,找到链接列表中所有节点对,加起来就是10.我想出了以下内容.
算法:比较每个节点,从第二个节点开始,每个节点从头节点开始直到前一个节点(比较当前节点之前)并报告所有这些对.
我认为这个算法应该可行,但它当然不是具有O(n2)复杂度的最有效算法.
任何人都可以暗示一种更有效的解决方案(可能需要线性时间).这种解决方案可以使用附加或临时节点.
据我所知,当操作系统创建线程时,每个线程都会获得一个不同的堆栈.我想知道每个线程是否也有一个与自身不同的堆?