'這是數(shù)組的一個方法了,可是可以給數(shù)組定義擴(kuò)展方法來實現(xiàn)這種形式。不過要給Item每個成員能動態(tài)生成相應(yīng)方法,想不出其它簡單點的辦法,只能一個一個的添加擴(kuò)展方法。
目前創(chuàng)新互聯(lián)建站已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、成武網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
Namespace?測試
Public?Class?Item
Public?Number()?As?String
Public?Name?As?String
Public?Symbol?As?String
Public?Value?As?Single
Public?Unit?As?String
Public?Description?As?String
Public?Remarks?As?String
End?Class
Public?Class?XX
Public?tty()?As?Item
Public?Sub?New()
tty(0).Name?=?"Women"
tty(0).Value?=?198000
tty(1).Name?=?"temen"
tty.Name("temen").Value?=?99999
End?Sub
End?Class
Public?Module?Module1
System.Runtime.CompilerServices.Extension()?_?
Public?Function?Name(ByVal?she?As?Item(),?ByVal?key?As?String)?As?Item?'定義擴(kuò)展方法功能?在net.3.5前的版本像似沒有。
For?Each?it?In?she
If?it.Name?=?key?Then
Return?it
End?If
Next
Return?Nothing
End?Function
End?Module
End?Namespace
樓主您好,這個拓展方法是為LinQ服務(wù)的,用來在集合內(nèi)篩選數(shù)據(jù)
比如有一個List(Of Integer)
類型的scoreList對象,里面存有學(xué)生的考試成績。如果我要輸出
大于等于60分的成績,可以這樣:
Dim r=(From s in scoreList Where s=60 Select s).ToList()
For Each e In r
Console.WriteLine(e)
Next
第一句實際編譯為對集合的Where等拓展方法的調(diào)用
由于漢語語言表述的所帶來的不易理解性,我們還是直接用代碼來解釋吧,如下的代碼片段:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static class StringExtentsion
{
public static string ToString(this string str)
{
return "Extentsion" + str;
}
}
class Program
{
static void Main(string[] args)
{
string str = "test";
Console.WriteLine(str.ToString()); // 輸出結(jié)果為: test,也就說編譯器會優(yōu)先選用原有類的實例化方法,如果沒找到匹配方法再尋找擴(kuò)展方法
Console.Read();
}
}
由上述的代碼片段可以知:StringExtentsion類中擴(kuò)展方法ToString 和 String類的原有的ToString方法 對于客戶端代碼而言,它們的語法表象是
一樣的,但本質(zhì)上一個是StringExtentsion類的靜態(tài)方法,一個是String類的實例化方法。然而編譯運行沒有產(chǎn)生錯誤,更沒有產(chǎn)生警告。所以在
這種情況下很容“埋雷”,一不小心就會中招。有人也許會說:我注意一下不要和.NET類庫的方法重名就可以了。但是你能保證 .NET 6、甚至.NET 10
的方法名和你寫的絕對不重名嗎?所以,擴(kuò)展方法存在著版本控制的問題。
首先顯示器設(shè)置成“擴(kuò)展”模式,即三臺顯示器的屏幕共同組成一個橫向的大屏幕
其次,將VB.NET的三個窗口用代碼移動到每個顯示器的坐標(biāo)原點即可
以修改“C:\abc.txt"為bat為例。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Myfile As String
Myfile = IO.Path.ChangeExtension("C:\abc.txt", ".bat")
Microsoft.VisualBasic.FileSystem.Rename("C:\abc.txt", Myfile)
End Sub
End Class