Konstruktorok

A típusok egyik legfontosabb statikus metódusa a konstruktorok. Ezek a metódusok hívódnak meg, amikor a típus egy példányát hozzuk létre. Például, amikor a következő kifejezést hajtjuk végre, akkor a [datetime] egy olyan konstruktorát hívjuk meg, ami egy konkrét időadatot hoz létre:

PS C:\> $d = New-Object -TypeName DateTime -ArgumentList 2015,09,29,21,49,11

PS C:\> $d

 

2015. szeptember 29. 21:49:11

A konstruktorok megtekinthetők kiolvashatók a következő módon:

PS C:\> [datetime].GetConstructors() | %{$_.tostring()}

Void .ctor(Int64)

Void .ctor(Int64, System.DateTimeKind)

Void .ctor(Int32, Int32, Int32)

Void .ctor(Int32, Int32, Int32, System.Globalization.Calendar)

Void .ctor(Int32, Int32, Int32, Int32, Int32, Int32)

Void .ctor(Int32, Int32, Int32, Int32, Int32, Int32, System.DateTimeKind)

Void .ctor(Int32, Int32, Int32, Int32, Int32, Int32, System.Globalization.Cale

ndar)

Void .ctor(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

Void .ctor(Int32, Int32, Int32, Int32, Int32, Int32, Int32, System.DateTimeKin

d)

Void .ctor(Int32, Int32, Int32, Int32, Int32, Int32, Int32, System.Globalizati

on.Calendar)

Void .ctor(Int32, Int32, Int32, Int32, Int32, Int32, Int32, System.Globalizati

on.Calendar, System.DateTimeKind)

Sajnos ez a formátum nem annyira sokatmondó. Egy picit masszírozva már egy kicsit szebb képet kapunk:

[datetime].GetConstructors() | %{

    $params = ($_.GetParameters() | %{"$($_.ParameterType) $($_.Name)"}) -join ", "

    "void .ctor($params)"

}

void .ctor(long ticks)

void .ctor(long ticks, System.DateTimeKind kind)

void .ctor(int year, int month, int day)

void .ctor(int year, int month, int day, System.Globalization.Calendar calenda

r)

void .ctor(int year, int month, int day, int hour, int minute, int second)

void .ctor(int year, int month, int day, int hour, int minute, int second, Sys

tem.DateTimeKind kind)

void .ctor(int year, int month, int day, int hour, int minute, int second, Sys

tem.Globalization.Calendar calendar)

void .ctor(int year, int month, int day, int hour, int minute, int second, int

 millisecond)

void .ctor(int year, int month, int day, int hour, int minute, int second, int

 millisecond, System.DateTimeKind kind)

void .ctor(int year, int month, int day, int hour, int minute, int second, int

 millisecond, System.Globalization.Calendar calendar)

void .ctor(int year, int month, int day, int hour, int minute, int second, int

 millisecond, System.Globalization.Calendar calendar, System.DateTimeKind kind

)

Igazán 5.0 vagy újabb PowerShell esetében van a legkönnyebb dolgunk, hiszen itt a PowerShell hozzárak egy „new() ” metódust az osztályokhoz, ami a konstruktort szimbolizálja, ezt pedig elég egyszerű lekérdezni:

PS C:\> [datetime]::new

 

OverloadDefinitions

-------------------

datetime new(long ticks)

datetime new(long ticks, System.DateTimeKind kind)

datetime new(int year, int month, int day)

datetime new(int year, int month, int day, System.Globalization.Calendar calen

dar)

datetime new(int year, int month, int day, int hour, int minute, int second)

datetime new(int year, int month, int day, int hour, int minute, int second, S

ystem.DateTimeKind kind)

datetime new(int year, int month, int day, int hour, int minute, int second, S

ystem.Globalization.Calendar calendar)

datetime new(int year, int month, int day, int hour, int minute, int second, i

nt millisecond)

datetime new(int year, int month, int day, int hour, int minute, int second, i

nt millisecond, System.DateTimeKind kind)

datetime new(int year, int month, int day, int hour, int minute, int second, i

nt millisecond, System.Globalization.Calendar calendar)

datetime new(int year, int month, int day, int hour, int minute, int second, i

nt millisecond, System.Globalization.Calendar calendar, System.DateTimeKind ki

nd)

Ez szinte ugyanazt adja, mint az én megoldásom. Természetesen az internetet is használhatjuk a konstruktorok felderítéséhez, a fenti példát itt:

https://msdn.microsoft.com/en-us/library/system.datetime.datetime(v=vs.110).aspx

40 . ábra Konstruktorok az MSDN-ben



Word To HTML Converter