.Net中的某些集合类型具有可选的"初始容量"构造函数参数.例如:
Dictionary<string, string> something = new Dictionary<string,string>(20);
List<string> anything = new List<string>(50);
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到MSDN上这些对象的默认初始容量.
如果我知道我只会在字典中存储12个左右的项目,那么将初始容量设置为20就没有意义吗?
我的理由是,假设容量增长的速度与StringBuilder一样,每次容量达到时都会增加一倍,并且每次重新分配都很昂贵,为什么不预先设置你知道会保存数据的大小,还有一些额外的房间以防万一?如果初始容量是100,并且我知道我只需要十几个,那么好像其余的内存都没有分配.
我正在构建一个Windows服务应用程序,其中包含存储在App.Config中的配置数据.但是,我注意到在构建应用程序时会生成AppName.Exe.Config.
有人能告诉我这两个文件之间的关系吗?AppName.Exe.Config文件是我用我的Windows服务应用程序而不是app.config安装的吗?
谢谢 - 兰迪
我需要.NET中的免费代码覆盖工具用于个人项目.NCover对于人来说有点贵.
我正准备开始为一个相当大的公司开发新的Web项目.
对于所有用户,例如17,000人,他们都被IE6困住了.他们计划在今年年底之前让所有人都过渡到IE7,但是IT部门正在开始推动这一承诺.
我被要求做的是给项目发起人一些更多的弹药推动.然而,我的魅力政客按钮似乎被打破了.我只是无法想出简单的短语,例如"IE6很糟糕"或"它还需要我一百万小时才能让它在IE6中运行"而且所有这些都可能是真的,但它并没有真的觉得这是一个非常成熟的陈述.
我想我正在寻找的是,某种外行人的解释方式是,我们可以支持IE6,但我需要一些危险工资,并且通过某种确凿证据支持这一事实确实需要更多几个小时让一些东西看起来正确,并在IE6和IE7中工作.
我开始利用.Net 4.0中的可选参数
我遇到的问题是当我尝试声明System.Drawing.Color的可选参数时:
public myObject(int foo, string bar, Color rgb = Color.Transparent)
{
// ....
}
Run Code Online (Sandbox Code Playgroud)
我希望Color.Transparent是rgb参数的默认值.问题是,我一直得到这个编译错误:
'rgb'的默认参数值必须是编译时常量
如果我只能将原始类型用于可选参数,那么它真的会杀死我的计划.
我有一个日志表,将从几个Web应用程序接收插入.我不会对这些数据进行任何搜索/排序/查询.我将把数据拉到另一个数据库来运行报告.初始表严格用于RECEIVING日志消息.
有没有办法确保Web应用程序不必等待这些插入?例如,我知道添加大量索引会减慢插入速度,所以我不会.那里还有什么?我不应该添加主键吗?(每晚会将表格抽到报告数据库中,该报告数据库将包含很多键/索引)
我有一张桌子:
Series ======== ID SeriesName ParentSeriesID
一个系列可以是"根"系列,(ParentSeriesID是0或null)或者它可以有一个父系列.一个系列也可以是几个级别,即它的父级有一个父级,它有一个父级等.
如何通过它的ID和所有后代系列来查询表格以获得系列?
到目前为止,我尝试过:
SELECT child.*
FROM Series parent JOIN Series child ON child.ParentSeriesID = parent.ID
WHERE parent.ID = @ParentID
Run Code Online (Sandbox Code Playgroud)
但这只返回第一级子节点,我想要父节点和所有"下游"节点.我不确定如何从这里进步.
假设我们有一个带有平面的3d空间,其中有一个任意方程:ax + by + cz + d = 0现在假设我们在该平面上选择3个随机点:(x0,y0,z0)(x1,y1,z1 )(x1,y1,z1)
现在我对这架飞机有不同的观点(相机).我的意思是我有一个不同的相机,从不同的角度来看这个飞机.从相机的角度来看,这些点具有不同的位置.例如(x0,y0,z0)将是(x0',y0')和(x1,y1,z1)将是(x1',y1')和(x2,y2,z2)将是(x2',y2) ')从新相机的角度来看.
所以这是我的一个难题!我想从新的摄像机视角中选择一个例如(X,Y)的点,并告诉它在该平面上的位置.我所知道的是3点及其在3d空间上的位置以及它们在新摄像机视图上的投影位置.
你知道平面方程和摄像机位置的系数(以及投影),还是只有六点? - 尼尔斯
我知道前3分的位置.因此我们可以计算出平面的系数.所以我们确切地知道了飞机的位置(0,0,0).然后我们有相机只能看到积分!因此,相机唯一看到的是3点,它也知道它们在3d空间中的位置(并确保它们在2d摄像机视图平面上的位置).毕竟我想看相机视图,选择一个点(例如(x1,y1))并告诉那个平面上的那个点.(当然,这个(X,Y,Z)点应该适合平面方程).此外,我对相机位置一无所知.
我在Windows窗体上有几个文本框.
我无法使用CTRL-V将文本粘贴到任何文本中,但我仍然可以右键单击并选择粘贴.这很烦人.
我已经尝试使用表单的KeyPreview作为true和false.TextBox.ShortcutsEnabled也是如此.
我有一个包装List <>的类
我有索引方法GetValue:
public RenderedImageInfo GetValue(int index)
{
list[index].LastRetrieved = DateTime.Now;
return list[index];
}
Run Code Online (Sandbox Code Playgroud)
如果用户请求的索引超出范围,则会抛出ArgumentOutOfRangeException.
我应该让这种情况发生或检查并扔掉我自己的吗?即
public RenderedImageInfo GetValue(int index)
{
if (index >= list.Count)
{
throw new ArgumentOutOfRangeException("index");
}
list[index].LastRetrieved = DateTime.Now;
return list[index];
}
Run Code Online (Sandbox Code Playgroud)
在第一个场景中,用户将从内部列表中获得异常,这会破坏用户不需要了解底层对象的OOP目标.
但在第二种情况下,我觉得好像在添加冗余代码.
编辑:
现在,我想到了,第三种情况,我捕获内部异常,修改它,并重新抛出它?
.net ×5
c# ×5
.net-4.0 ×1
3d ×1
architecture ×1
browser ×1
collections ×1
exception ×1
geometry ×1
sql ×1
sql-server ×1
t-sql ×1
winforms ×1