C#具有该using语句,特别是对于IDisposable对象.据推测,using语句中指定的任何对象都将拥有某种应该确定性释放的资源.
然而,在我看来,编程中有许多设计具有单一,明确的开始和结束,但缺乏内在的语言支持.该using构造提供了使用代码编辑器的内置特征的机会,至少清楚且自然地突出了这种设计或操作的范围.
我想到的是经常以a BeginXXX()和EndXXX()方法开始的那种操作,尽管有很多不同的风格,例如涉及"开始"和"连接"的异步代码执行.
拿这个天真的例子吧.
webDataOperation.Start();
GetContentFromHardDrive();
webDataOperation.Join();
// Perform operation that requires data from both sources
Run Code Online (Sandbox Code Playgroud)
相反,如果Start方法返回了一个IDisposable.Dispose方法执行连接操作的对象,该怎么办?
using(webDataOperation.Start()) {
GetContentFromHardDrive();
}
// Perform operation that requires data from both sources
Run Code Online (Sandbox Code Playgroud)
或者,更好的是,我特别想到的是:我有一个对象,它具有高度专业化的图形blitting,并且有一个Begin()和End()方法(一个设计也出现在DirectX和XNA中).代替...
using(blitter.BlitOperation()) {
// Do work
}
// Use result
Run Code Online (Sandbox Code Playgroud)
它似乎更自然,更易读,但它是不可取的,因为它使用IDisposable界面和using声明用于非预期的目的?换句话说,这是否与以非直观的方式运算符操作符相同?
我正在使用a RichTextBox来显示RTF文件,其中包含一个超链接.链接文本不是URL(目标是有效的URL).RTF是使用Word创建的.Word和写字板都能正确识别链接(写字板不会启动链接,但会显示相应的手形光标).
当我将RTF加载到RichTextBox链接时,链接显示格式正确(蓝色和下划线),但不是表现得像链接,当光标在链接上移动时它仍然是工字梁,LinkClicked事件不会触发,它实际显示链接后尖括号之间的目标(这似乎不正确).由于链接文本不是URL,DetectUrls因此在这里没有帮助.
有RichTextBox没有正确处理这些链接的原因,或者是一种使它们按预期工作的方法?
这是代码.
TipView.Rtf = tips[tipIndex];
// I've also tried TipView.LoadFile, with identical result
Run Code Online (Sandbox Code Playgroud)
要重现此问题,请使用Word(我正在使用2000)创建一个RTF文档,其中包含一个文本不是URL但是以有效URL为目标的链接,并以编程方式将.rtf文件加载到RichTextBox(我使用的是.NET 2.0)在C#Express 2008中.
我是自定义绘制一个菜单项MenuStrip.我遇到的问题是菜单项坚持根据文本调整自身大小,这不是我想要的(没有文本).我可以设置AutoSize为false并明确指定大小,但是包含的menu(ToolStripDropDown)仍然根据文本调整自身大小,这会导致它太小而无法包含整个菜单项.
有没有直接的方法来设置菜单项的大小?
C#3.0的自动属性是否完全取代了归档?
我的意思是,我可以直接使用该属性而不是归档作为属性作为私人支持字段.(对不起,我只是这样理解).
int a;
public int A
{
get;set;
}
Run Code Online (Sandbox Code Playgroud)