以修改“C:\abc.txt"为bat为例。
成都创新互联于2013年开始,先为鼓楼等服务建站,鼓楼等地企业,进行企业商务咨询服务。为鼓楼企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
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
由于汉语语言表述的所带来的不易理解性,我们还是直接用代码来解释吧,如下的代码片段:
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()); // 输出结果为: test,也就说编译器会优先选用原有类的实例化方法,如果没找到匹配方法再寻找扩展方法
Console.Read();
}
}
由上述的代码片段可以知:StringExtentsion类中扩展方法ToString 和 String类的原有的ToString方法 对于客户端代码而言,它们的语法表象是
一样的,但本质上一个是StringExtentsion类的静态方法,一个是String类的实例化方法。然而编译运行没有产生错误,更没有产生警告。所以在
这种情况下很容“埋雷”,一不小心就会中招。有人也许会说:我注意一下不要和.NET类库的方法重名就可以了。但是你能保证 .NET 6、甚至.NET 10
的方法名和你写的绝对不重名吗?所以,扩展方法存在着版本控制的问题。
楼主您好,这个拓展方法是为LinQ服务的,用来在集合内筛选数据
比如有一个List(Of Integer)
类型的scoreList对象,里面存有学生的考试成绩。如果我要输出
大于等于60分的成绩,可以这样:
Dim r=(From s in scoreList Where s=60 Select s).ToList()
For Each e In r
Console.WriteLine(e)
Next
第一句实际编译为对集合的Where等拓展方法的调用
如没有现存的办法的话只能读取注册表,以txt文件为类:
HKEY_CLASSES_ROOT\.txt '在这个地址有个默认属性值是:txtfile
HKEY_CLASSES_ROOT\txtfile\shell\open\command '这里的默认属性值txtfile的关联程序:%SystemRoot%\system32\NOTEPAD.EXE %1
我暂不了解vb.net读注册表函数(刚在学),以vbs为类:
Dim WshShell
Set WshShell = WScript.CreateObject("Wscript.Shell")
Dim Ext
ext= WshShell.RegRead ("HKEY_CLASSES_ROOT\.mp3\") '这里的扩展名.mp3可以改成其它的看看
MsgBox WshShell.RegRead ("HKEY_CLASSES_ROOT\" ext "\shell\open\command\")