使用内联对象创建减少.Net代码

时间:2012-04-04 15:53:33

标签: .net vb.net visual-studio-2010

我已经设法将几行代码压缩到此

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

我找不到任何地方如何引用我正在使用的 的对象,将控件添加回' galleryContent' - 使用普通me崩溃了整个网络服务器...... whooops。

使用不提供仅使用.的较短手 - 但它使用唯一的方法来做到这一点?我非常期待某种.Methis

之类的东西

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

你做不到。至少不那样。

试试这个:

For Each gal In galleries 
   Dim obj as New HtmlGenericControl("div") 
   With obj
        .ID = gal.Header 
        .Controls.Add(New HtmlImage() With {.Src = "http://p.com/pic.jpg"}) 

        galleryContent.Controls.Add(ojb) 
   End With 
Next 

答案 1 :(得分:2)

Mystere Man是正确的,但想一想......这会影响代码的可读性。

“代码的读取频率远高于编写代码,因此请相应地进行规划”

我建议避免在VB中使用“With”...除非你真的“必须”。

希望它有所帮助。

答案 2 :(得分:1)

您可以执行以下操作:

For Each gal in galleries
    galleryContent.Controls.Add(New HtmlGenericControl("div") With { .ID = gal.Header })
    galleryContent.Controls[galleryContent.Controls.Count - 1].Controls.Add(New HtmlImage() With {.Src = "http://p.com/pic.jpg"})
Next

但这纯粹是为了减少线路。它严重降低了可读性,因此在任何正常情况下,您都不应该只是减少代码行。可读性远比“线路效率”重要。