我正在编写一个包含世代垃圾收集器的程序.只有两代人.我想知道的是:在进行全面收集时,我是通过先收集年轻的物体,将幸存者提升到老一代,然后收集老一代,或者我只是垃圾收集所有东西来获得任何东西(性能方面)一扫?我不确定人们通常采用哪种方式.
我现在正在使用两步法,因为它实现起来有点简单,但也许一步法更有效?
如果重要的话,垃圾收集器是非复制的.
我知道什么是反射,但为什么我需要在典型的业务线Winforms应用程序中使用它?
我有两个模型,有很多关系使用has_and_belongs_to_many.像这样:
class Competition < ActiveRecord::Base
has_and_belongs_to_many :teams
accepts_nested_attributes_for :teams
end
class Team < ActiveRecord::Base
has_and_belongs_to_many :competitions
accepts_nested_attributes_for :competitions
end
Run Code Online (Sandbox Code Playgroud)
如果我们假设我已经在数据库中创建了几个比赛,那么当我创建一个新的团队时,我想使用嵌套表单将新团队与任何相关的比赛相关联.
在这一点上,我确实需要帮助(已经坚持了好几个小时!)我认为我现有的代码已经以错误的方式解决了这个问题,但我会在以下情况下展示:
class TeamsController < ApplicationController
def new
@team = Team.new
@competitions.all
@competitions.size.times {@team.competitions.build}
end
def create
@team = Team.new params[:team]
if @team.save
# .. usual if logic on save
end
end
end
Run Code Online (Sandbox Code Playgroud)
并且观点......这是我真正陷入困境的地方所以我不会同时发布我的努力.我想要的是每个比赛的复选框列表,以便用户可以选择适当的比赛,并且不选择那些比赛.
我真的坚持这个,所以欣赏任何指向正确的方向,你可以提供:)
我们可以在一个表格之外绘制图像和绘制文本......我的意思是字面上在外...
我知道要问的愚蠢问题,但我们能......
我有一个使用Thread类的类:
class A
{
public Thread thread
{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我应该实现IDisposable并将Thread属性设置为null吗?
class A : IDisposable
{
public Thread Thread
{ get; set; }
protected bool Disposed
{ get; set; }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!this.Disposed)
{
if (disposing)
{
if (Thread != null)
Thread = null;
}
Disposed = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或不?
为什么?
有人可以向我解释这行代码的含义以及这是否是一种好的做法?
在我看来,它试图将一个或另一个值分配给布尔值,但目前尚不清楚.
myBoolVar = isC || isP || isX;
Run Code Online (Sandbox Code Playgroud) 我正在编写一个实用程序,需要在HKCR中创建所有注册表值的列表.我这样做是使用递归函数:
var list = new Dictionary<string, string>();
Read(Registry.ClassesRoot, list);
static void Read(RegistryKey root, IDictionary<string, string> values)
{
foreach (var child in root.GetSubKeyNames())
{
using (var childKey = root.OpenSubKey(child))
{
Read(childKey, values);
}
}
foreach (var value in root.GetValueNames())
{
values.Add(string.Format("{0}\\{1}", root, value), (root.GetValue(value) ?? "").ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但需要很长时间(我的电脑上有20秒).有没有更快的方法来做到这一点,还是这样做得好?
我正在撰写归结为文档编辑器的内容.当应用程序关闭时,我需要提示用户保存更改.这很容易.我的问题是什么时候不提示用户,而只是丢弃未保存的数据并关闭.
在FormClosing事件中,CloseReason枚举包括:
我认为WindowsShutDown和TaskManagerClosing不应该导致"保存更改?" 提示出现,以防止应用程序挂起该提示显示.
这是标准做法,还是我应该在这里做些什么呢?
为清楚起见,这是代码:
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
if (!(e.CloseReason == CloseReason.WindowsShutDown || e.CloseReason == CloseReason.TaskManagerClosing)
&& this.ChangesPending())
{
switch (MessageBox.Show(this, "Save changes?", "Save Changes", MessageBoxButtons.YesNoCancel))
{
case DialogResult.Yes:
this.Save();
break;
case DialogResult.No:
// Do nothing
break;
case DialogResult.Cancel:
e.Cancel = true;
break;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我的表单上有一个PropertyGrid.我的老板认为这很难看.粗野.性格单纯.
他想要一个漂亮,整洁,干净的形式.这是一个问题:其中一个属性是我们自己种植的物品的集合.他喜欢这个系列的收藏编辑器.
我知道我可以建立自己的收藏编辑器.但有没有一个干净,简单的解决方案来节省我几个小时的编码,这样我可以直接创建和使用Collection编辑器而无需使用属性网格?
我正在编写一个VB脚本来更新网络上的一些文件.在开始之前,我想知道是否有任何文件被锁定.在我真正做任何更新之前,我想这样做.
我知道当我尝试更换文件时,如果文件被锁定,我可以处理错误,但我真的想知道在开始更新任何文件之前是否有任何文件被锁定.
有没有办法看到使用VBS锁定文件(除了尝试替换它)?
c# ×5
.net ×4
winforms ×2
associations ×1
boolean ×1
collections ×1
draw ×1
idisposable ×1
many-to-many ×1
model ×1
paint ×1
propertygrid ×1
reflection ×1
registry ×1
ruby ×1
shutdown ×1
vbscript ×1
wsh ×1