我遇到了一些有趣的东西,我似乎无法找到更多的信息,或者是一个正确的名称.
我想我们大多数人都知道如果你有多个using块,你只需要在最后一个之后包括括号using:
using (FileStream fileStream = new FileStream(zipFilePath, FileMode.Open))
using (ZipInputStream zipStream = new ZipInputStream(fileStream))
{
//stuff
}
Run Code Online (Sandbox Code Playgroud)
然而,在我周围发现,我发现以下代码也可以工作,没有紧随其后的括号using,捎带while:
using (BinaryWriter br = new BinaryWriter(context.Response.OutputStream))
while (true)
{
//stuff
}
Run Code Online (Sandbox Code Playgroud)
有谁知道这种语言"功能"的名称,允许代码块合并?
在下面的代码中,请注意Bar来自Foo.
class Program
{
public class Foo
{
public string data { get; set; }
}
public class Bar : Foo
{
}
static void Main(string[] args)
{
var bars = new List<Bar>();
bars.Add(new Bar() { data = "hello" });
bars.Add(new Bar() { data = "world" });
var resultsA = GetFoos(bars, (b => b.data.StartsWith("h")));
var resultsB = GetBars(bars, (b => b.data.StartsWith("h")));
}
static List<Foo> GetFoos(List<Foo> fooList, Func<Foo, bool> criteria)
{
return fooList.Where(criteria).ToList();
}
static List<Bar> GetBars(List<Bar> barList, Func<Bar, bool> criteria) …Run Code Online (Sandbox Code Playgroud) 我已经成功地将几行代码压缩了
For Each gal In galleries
With New HtmlGenericControl("div")
.ID = gal.Header
.Controls.Add(New HtmlImage() With {.Src = "http://p.com/pic.jpg"})
galleryContent.Controls.Add(**Me**)
End With
Next
Run Code Online (Sandbox Code Playgroud)
我找不到任何地方如何引用回到我正在使用的对象将控件添加回'galleryContent' - 使用普通me崩溃整个Web服务器... whooops.
使用不提供刚刚使用的较短手. - 但它使用唯一的方法来做到这一点?我特意期待某种类似的.Me 东西this
有任何想法吗?