我是C#的新手.我正在使用System.Data.SqlClient类从数据库表执行一些select查询.执行一些select查询时,我得到了sqlnullvalueexception.在谷歌搜索我发现如果数据库中的值为null,SqlDataReader.GetString(或它的变体)将抛出sqlnullvalueexception.这个最好的编码方法是什么?
if (!sqlDataReader.IsDBNull(n)) value = r.GetString(n);
Run Code Online (Sandbox Code Playgroud)
有更好的编码方式吗?
目前我使用一个列表来存储我的数据的一部分,并且它以这种格式完美地工作:
Item
----------------
Joe Bloggs
George Forman
Peter Pan
Run Code Online (Sandbox Code Playgroud)
现在,我想在此列表中添加另一行,因为它可以这样工作:
NAME EMAIL
------------------------------------------------------
Joe Bloggs joe@bloggs.com
George Forman george@formangrills.co
Peter Pan me@neverland.com
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用此代码在列表中创建列表,并且此代码在foreach循环中的另一个方法中使用:
// Where List is instantiated
List<List<string>> list2d = new List<List<string>>
...
// Where DataGrid instance is given the list
dg.DataSource = list2d;
dg.DataBind();
...
// In another method, where all people add their names and emails, then are added
// to the two-dimensional list
foreach (People p in ppl.results) {
list.Add(results.name);
list.Add(results.email);
list2d.Add(list);
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到了这个结果:
Capacity Count …Run Code Online (Sandbox Code Playgroud) 我一直在寻找提高工作效率的方法,而且我一直在阅读很多关于使用Dvorak键盘打字的知识.
看起来这对于写普通散文会更有成效,但编程呢?
我怀疑它会有效,因为在编程中使用分号,冒号,括号和&符号比在每天打字时更常见.
有没有人有这方面的经验?
我的Rails应用程序中有4个相关的迁移:
前3个迁移在self.up中创建一个表,并将它们放在各自的self.down方法中.
第4次迁移运行一个rake任务,将数据加载到所有三个(在self.up中).我在想这个迁移的self.down中要删除3个表中的行?
我做错了吗?可能应该创建一个迁移,我创建3个表并在self.up中加载数据,然后在self.down方法中删除所有三个表?
我正在拼命尝试连接NSViews的控件,这些控件将驻留在使用outlet的NSCollectionView中.使用NSArrayController提供集合视图.
我在一个单独的NIB文件中创建了NSView,在NSCollectionViewItem的实现中,我覆盖了copyWithZone来加载它:
-(id)copyWithZone:(NSZone *)zone
{
id result = [super copyWithZone:zone];
[NSBundle loadNibNamed:@"InputView" owner:result];
return result;
}
Run Code Online (Sandbox Code Playgroud)
我根据这个说明使用了这种方法.
不幸的是,这是发生的事情:

NSView看起来像这样:

NSCollectionView驻留在NSScrollView中,滚动条设置为自动启用.但正如你所看到的那样,没有滚动条.
我真的不明白我需要做什么,所以NSCollectionView知道它的NSViews的尺寸.
它之前我没有单独的NIB文件,但后来我无法从视图到项目的出口连接:-(
cocoa objective-c interface-builder cocoa-bindings nscollectionview
嗨我正在使用另一个不再在公司的人写的perl脚本.如果我将脚本作为独立运行,那么输出就像预期的那样.但是当我重复从另一个代码调用脚本时,输出错误,除了第一次.
我怀疑一些变量没有正确初始化.当它被称为独立时,每次退出时,所有变量值都初始化为默认值.但是当从另一个perl脚本调用时,模块和变量值可能会转移到下一次调用脚本.
在下次调用之前,有没有办法从内存中清除被调用的脚本?
我尝试启用警告,它抛出了1000行警告......!
编辑:我如何调用其他脚本:
代码如下所示:
do "processing.pl";
...
...
...
process(params); #A function in processing.pl
...
...
...
Run Code Online (Sandbox Code Playgroud) 我正在为.NET编写的应用程序包装模式和实践Enterprise Library Logging Application Block.
我希望能够子类化记录器(即提供特定于域的日志记录).
做这个的最好方式是什么?
例如,我目前有一个静态Logger类,但这不允许我专门针对特定于域的日志记录.
例如,
Log(MyDomainObj obj, string msg)
让我们说你有一个在后台线程上运行的简单操作.您希望提供一种取消此操作的方法,以便创建一个布尔标志,您可以从取消按钮的单击事件处理程序设置为true.
private bool _cancelled;
private void CancelButton_Click(Object sender ClickEventArgs e)
{
_cancelled = true;
}
Run Code Online (Sandbox Code Playgroud)
现在您正在从GUI线程设置取消标志,但是您正在从后台线程中读取它.在访问bool之前你需要锁定吗?
你需要这样做(显然也锁定了按钮点击事件处理程序):
while(operationNotComplete)
{
// Do complex operation
lock(_lockObject)
{
if(_cancelled)
{
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者这样做是否可以接受(没有锁定):
while(!_cancelled & operationNotComplete)
{
// Do complex operation
}
Run Code Online (Sandbox Code Playgroud)
或者将_cancelled变量标记为volatile.这有必要吗?
[我知道BackgroundWorker类有内置的CancelAsync()方法,但是我对这里的语义和锁定和线程变量访问的使用感兴趣,而不是具体的实现,代码只是一个例子.
似乎有两种理论.
1)因为它是一个简单的内置类型(并且对内置类型的访问在.net中是原子的)并且因为我们只在一个地方写入它并且只在后台线程上读取而不需要锁定或标记为volatile.
2)你应该将它标记为volatile,因为如果你不这样做,编译器可能会优化while循环中的读取,因为它认为它无法修改该值.
哪种方法正确?(为什么?)
[编辑:在这方面似乎有两个明确定义和对立的思想流派.我正在寻找一个明确的答案,所以请尽可能发布您的理由并引用您的消息来源和您的答案.]
关于F#中元素组合的最优雅和简单实现的另一个问题.
它应该返回输入元素的所有组合(列表或序列).第一个参数是组合中的元素数量.
例如:
comb 2 [1;2;2;3];;
[[1;2]; [1;2]; [1;3]; [2;2]; [2;3]; [2;3]]
Run Code Online (Sandbox Code Playgroud)