我正在学习AS3,对于静态变量或方法的作用,或者它与没有此关键字的方法或变量的区别,我感到有点困惑.我认为这应该足够简单回答.
如果我这样做:
DataSet ds = GetMyDataset();
try
{
string somevalue = ds.Tables[0].Rows[0]["col1"];
}
catch
{
//maybe something was null
}
Run Code Online (Sandbox Code Playgroud)
有没有使用try/catch检查空值的好方法?只是我不关心"col1"中的值是否为空,或者如果"col1"不存在,或者如果没有返回行,或者如果表不存在!
也许我应该关心?:)也许try/catch是接近这个的最佳方式,但我只是想知道是否有另一种方法可以做到这一点?
谢谢!
我有一些类似的代码:
HttpWebRequest req;
HttpWebResponse response;
Stream receiveStream = null;
StreamReader readStream = null;
try
{
req = (HttpWebRequest)WebRequest.Create("someUrl"));
req.Credentials = CredentialCache.DefaultCredentials;
req.Method = "GET";
response = (HttpWebResponse)req.GetResponse();
receiveStream = response.GetResponseStream();
readStream = new StreamReader(receiveStream, Encoding.Default);
return readStream.ReadToEnd();
}
catch
{
return "Error";
}
finally
{
readStream = null;
receiveStream = null;
response = null;
req = null;
}
Run Code Online (Sandbox Code Playgroud)
此代码是否应该具有readStream.Dispose()和responseStream.Dispose()而不是将它们都设置为null?
我在尝试将图像保存到数据库时遇到此错误.
我究竟做错了什么?

这是我桌子的设计:

我正在使用Microsoft Server 2008.
在这个例子中,我试图通过值传递,但是传递了引用.
for (int i = 0; i < 10; i++)
{
Thread t = new Thread(() => new PhoneJobTest(i);
t.Start();
}
Run Code Online (Sandbox Code Playgroud)
这样可以解决:
for (int i = 0; i < 10; i++)
{
int jobNum = i;
Thread t = new Thread(() => new PhoneJobTest(jobNum);
t.Start();
}
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?为什么原始示例传递引用?
我有一个奇怪的问题......在过去的几个小时里我一直在想不起......我在winform代码中输入的计时器(来自工具栏)不会打勾......
我在我的程序中有两种形式的计时器,它们都工作正常...我尝试完全相同它不会勾选...我选择它,将它拖到一个表单上,启用它,设置间隔和处理滴答事件...没有任何反应...我甚至尝试在tick事件中放置像messagebox.show这样的随机代码,只是为了看看是否有任何事情发生,什么都没有!正如我所说,我的程序中有一些更多的计时器(在其他形式,而不是我试图把这个计时器的那个),他们都工作正常...
有什么建议?
提前致谢!
我正在寻找一种干净的通用方法的概念来描述XAML FlowDocument中重复的页眉和页脚,而不需要任何代码.它只需要在从C#渲染到XPS时正确显示.
所有,
我使用Parallels.ForEach如下
private void fillEventDifferencesParallels(IProducerConsumerCollection<IEvent> events, Dictionary<string, IEvent> originalEvents)
{
Parallel.ForEach<IEvent>(events, evt =>
{
IEvent originalEventInfo = originalEvents[evt.EventID];
evt.FillDifferences(originalEventInfo);
});
}
Run Code Online (Sandbox Code Playgroud)
好的,所以我遇到的问题是我有28个这样的列表(一个测试样本,这应该可以扩展到200+)和FillDifferences方法非常耗时(每次调用大约4s).因此,在普通ForEach中运行的平均时间大约为100-130秒.当我在Parallel中运行相同的东西时,它需要相同的时间和Spikes我的CPU(Intel I5,2 Core,每个Core 2个线程)导致应用程序在此查询运行时变得迟缓(这是在一个线程上运行这是由GUI线程产生的).
所以我的问题是,我做错了什么导致这花费相同的时间?我读到List不是线程安全的所以我重写了这个以使用IProducerConsumerCollection.是否有任何其他陷阱可能导致这种情况?
FillDifferences方法调用一个静态类,该类使用反射来找出原始对象和修改对象之间存在多少差异.静态对象没有"全局"变量,只有被调用方法的局部变量.
有些人想看看FillDifferences()方法调用了什么.这是最终结束的地方:
public List<IDifferences> ShallowCompare(object orig, object changed, string currentName)
{
List<IDifferences> differences = new List<IDifferences>();
foreach (MemberInfo m in orig.GetType().GetMembers())
{
List<IDifferences> temp = null;
//Go through all MemberInfos until you find one that is a Property.
if (m.MemberType == MemberTypes.Property)
{
PropertyInfo p = (PropertyInfo)m;
string newCurrentName = "";
if (currentName != …Run Code Online (Sandbox Code Playgroud) 我想知道为什么给定代码的输出(在LinqPad中执行它)
void Main() {
Compare1((Action)Main).Dump();
Compare2(Main).Dump();
}
bool Compare1(Delegate x) {
return x == (Action)Main;
}
bool Compare2(Action x) {
return x == Main;
}
Run Code Online (Sandbox Code Playgroud)
总是:
False
True
Run Code Online (Sandbox Code Playgroud)
我天真地预计它会出现True在两种情况下.
如果你宣布MenuItems,我总是看到他们的Header属性声明如下:
<MenuItem Header="_Edit">
<MenuItem Header="_Undo"/>
<MenuItem Header="_Redo"/>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)
而不是像这样:
<MenuItem Header="Edit">
<MenuItem Header="Undo"/>
<MenuItem Header="Redo"/>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)
有这个原因还是只是一个惯例?在设计师看来,无论我是否有下划线,它似乎都没有影响.