您的位置:首页 > 运维架构 > Shell

浅谈PowerShell 5.0中的.NET Class支持

2015-06-01 15:27 302 查看
PowerShell在经历了多个版本更新后,已经迎来了它的5.0版本。当然目前在写此篇博文时,它还是5.0 预览版本,所以本篇内容中的一些技术要点可能会随着正式版本的发布有一些更新和改动。

一些人应该已经注意到了Windows PowerShell 5.0 Preview版本中已经支持了直接创建.NET Classes的特性,这点可以说是非常强大的。从微软官方公开的信息可以得知,在PowerShell中可以使用正统标准的类似真正面向对象的语法,其目标也是为了开发者和IT专业人士能够将PowerShell应用到更广的应用和开发场景。

废话不多说,既然这篇文章是浅谈类型,这里我们就不过于讲解一些细节了,一起来看一下如何在PowerShell中创建.NET Class。

和C#等其他.NET类似语言一样,我们可以直接用Class关键字创建一个类,如下:

class Person
{

}
这样我们就创建了一个类结构体,当然这其实并没有真正的生成一个对象,这只是我向大家展示的一个基本创建Class的方法。对于有过编程开发经验的朋友一定知道,创建了一个类对象,它一定还可能会有它的属性,它的方法等等。后面的博文我会陆续演示这些最基本的东西。为了能够更清楚的说明PowerShell中的Class结构体,我打算在这个Class中创建几个属性,如下:

Class Person
{
[UInt32]$Age;
[String]$Name;
}
看吧,有过C#编程经验的朋友一定会定义这些属性类型很熟悉,没错,这里我们定义了两个属性,整型和字符串属性。

接下去,当我们已经创建好这个类型体和它的属性时,我们通常要真正创建这个对象,同时我也需要给我刚才创建的两个属性赋值,也就是我们说的初始化。我们可以像下面这样:

Class Person
{
[UInt32]$Age;
[String]$Name;

Person([UInt32]$Age,[String]$Name)
{
$this.Age = $Age;
$this.Name = $Name
}
}
在上面这个例子中,我使用了最常用的创建一个构造函数,这个构造函数将会帮我们初始化我们的两个属性对象,这里需要指出的是,在PowerShell Class里要指向对象自己,和其它很多语言中一样,可以使用this前缀词。

接着,我们要真正调用我们构造的类时,一定有一些朋友会联想到用New-Object,但是这里我们不能用这个方法,我们必须调用类型本身的New()方法来初始化化这个实例,在调用实例时,我们输入对应的参数值方法如下:

Class Person
{
[UInt32]$Age;
[String]$Name;

Person([UInt32]$Age,[String]$Name)
{
$this.Age = $Age;
$this.Name = $Name
}
}

$MyPersonInfo = [Person]::new(25,'Anders')
$MyPersonInfo
最后,很明显我们得到了我们想要的结果。

Age Name
--- ----
25 Anders
今天到这里,我们只是给大家简单的说明了PowerShell 5.0中引入的新特性,Class的特点绝对不仅于此,PowerShell支持面向对象后还有更多更精彩的地方,后面我会陆续更新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: