char []とcharの違いは何ですか?

ニコラ・ジョンソン

[char]データ型を使用する場合、値は1文字である必要があります。例:

[char]"a"
a

複数の文字で使用するとエラーが発生するため、次のようになります。

[char]"ab"
Cannot convert value "ab" to type "System.Char". Error: "String must be exactly one
character long."
At line:1 char:1
+ [char]"ab"
+ ~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvalidCastParseTargetInvocation

しかし、私が使用する場合

[char[]]"ab"

出力を取得します

a
b

Get-Member両方を比較すると、結果は得られません。

PS C:\Users\nijoh> Compare-Object -ReferenceObject $([char] | gm) -DifferenceObject $([char[]] | gm) -PassThru
PS C:\Users\nijoh>

しかし、表示が異なるため、2つの異なるタイプであることがわかります。

PS C:\Users\nijoh> ([char[]]"a").GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Char[]                                   System.Array


PS C:\Users\nijoh> ([char]"a").GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Char                                     System.ValueType

だから、何の違いである[char][char[]]PowerShellのデータ型は?

mklement0

PowerShellでは、で囲まれ[...]型名型リテラル、つまり、という名前の.NET型を表すオブジェクトです。

それとは別に 内部[...][] は、型名の直後はその型の要素を含む配列表します。内部[...]使用されている表記法の概要については、この回答を参照してください

したがって:

  • [char]型を参照しますSystem.CharSystem.接頭辞はPowerShellでは通常オプションです。さらに、ここにあるように、PowerShellには、任意の名前空間にある型に単純な名前を使用できるようにする型アクセラレータの固定セットがありますこの回答を参照してください)。

    • 特定の型リテラルの完全な(名前空間で修飾された).NET型名を取得するには[...].FullName、;を使用します。例:[char].FullName収量System.Char
  • [char[]]要素がタイプcharSystem.Charある配列タイプを参照します。[char[]].FullNameを生成しSystem.Char[]ます。


複数の文字で使用するとエラーが発生するため([char]"ab"

PowerShellには[char]リテラルがなく文字列[string])リテラルのみがあります1文字を表す-に文字列キャストすると[char]1文字の文字のみが受け入れられます。たとえば、[char] 'a'機能しますが[char] 'ab'[char] "ab"機能しません。

しかし、私が使用する場合[char[]]"ab"...

文字列を文字の配列キャストすると、文字列の個々の文字で構成される文字配列が返されます。

言い換えると、:[char[]] "ab"はと同等"ab".ToCharArray()です。

Get-Member両方を比較すると、結果は得られません。

その理由は、それがあるGet-Member上で動作するタイプの入力オブジェクトの、入力オブジェクトがある場合、型リテラルなど-[char][char[]]-その型がある、検査されるSystem.RuntimeTypeから派生していること、非公共PowerShellのタイプSystem.Reflection.TypeInfoの.NET説明、タイプ

言い換えると、パイプされたすべての型リテラルGet-Memberは、参照する特定の型に関係なく同じ出力になります。これは、メンバーが報告されている唯一の記述型であるためです。

したがって、異なるタイプのリテラルを使用したCompare-ObjectonGet-Member呼び出しを使用する呼び出しの結果が同じになるため、予想どおりに出力が生成されません[1](出力を生成しないことは、違いが検出されなかったことを示す方法です。)Get-MemberCompare-Object


[1]は、入力オブジェクトのタイプのメンバーごとに1つずつGet-MemberMicrosoft.PowerShell.Commands.MemberDefinitionインスタンスの配列を出力します渡され引数がない場合、これらのインスタンスはによって全体として比較され、各メンバーの意味のある表現が生成されます。-PropertyCompare-Object.ToString()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C / CPPのchar []とchar [n]の違いは何ですか?

分類Dev

char s []とchar * sの違いは何ですか?

分類Dev

'char *'と 'char(*)[100]'の違いは何ですか?

分類Dev

char array []とchar * arrayの違いは何ですか?

分類Dev

関数からchar *とchar []を返すことの違いは何ですか?

分類Dev

Cのchar配列とcharポインタの違いは何ですか?

分類Dev

JavaのcharとCharacterの違いは何ですか?

分類Dev

hexとchar配列の印刷の違いは何ですか?

分類Dev

CのcharstringA [LEN]とchar * stringB [LEN]の違いは何ですか

分類Dev

char * str = {"foo"、...}とchar str [] [5] = {"foo"、...}配列定義の違いは何ですか?

分類Dev

Character.isWhitespace(char)とCharacter.isSpaceChar(char)の違いは何ですか

分類Dev

VARCHARとCHARの違いは何ですか?

分類Dev

extern char ** environとexternchar * environ []の違いは何ですか

分類Dev

(char *) 'r'と "r"の違いは何ですか?

分類Dev

char word [25]の違いは何ですか。and char word [25] = "";?

分類Dev

char []と&char []の違いは?

分類Dev

構造体内で宣言するときのchar []とchar *の違いは何ですか?

分類Dev

char * argv []を渡すこととchar * argvを宣言することの違いは何ですか?

分類Dev

CとC#またはJAVAのcharの違いは何ですか

分類Dev

スイッチケースのcharとintの違いは何ですか?

分類Dev

int main(int argc、char * argv [])とint main(int argc、char ** argv)の違いは何ですか

分類Dev

char array [100]の違いは何ですか。およびchararray [100] = "";?

分類Dev

C ++のchar ** argv []とは何ですか?

分類Dev

C ++のchar()型とは何ですか?

分類Dev

char *とchar []の違い(2)

分類Dev

char **とchar [] []の違い

分類Dev

charとintを定義するときのポインタの違いは何ですか?

分類Dev

char *とchar []のscanfの違いは?

分類Dev

Cでのchar []とchar *の違い

Related 関連記事

  1. 1

    C / CPPのchar []とchar [n]の違いは何ですか?

  2. 2

    char s []とchar * sの違いは何ですか?

  3. 3

    'char *'と 'char(*)[100]'の違いは何ですか?

  4. 4

    char array []とchar * arrayの違いは何ですか?

  5. 5

    関数からchar *とchar []を返すことの違いは何ですか?

  6. 6

    Cのchar配列とcharポインタの違いは何ですか?

  7. 7

    JavaのcharとCharacterの違いは何ですか?

  8. 8

    hexとchar配列の印刷の違いは何ですか?

  9. 9

    CのcharstringA [LEN]とchar * stringB [LEN]の違いは何ですか

  10. 10

    char * str = {"foo"、...}とchar str [] [5] = {"foo"、...}配列定義の違いは何ですか?

  11. 11

    Character.isWhitespace(char)とCharacter.isSpaceChar(char)の違いは何ですか

  12. 12

    VARCHARとCHARの違いは何ですか?

  13. 13

    extern char ** environとexternchar * environ []の違いは何ですか

  14. 14

    (char *) 'r'と "r"の違いは何ですか?

  15. 15

    char word [25]の違いは何ですか。and char word [25] = "";?

  16. 16

    char []と&char []の違いは?

  17. 17

    構造体内で宣言するときのchar []とchar *の違いは何ですか?

  18. 18

    char * argv []を渡すこととchar * argvを宣言することの違いは何ですか?

  19. 19

    CとC#またはJAVAのcharの違いは何ですか

  20. 20

    スイッチケースのcharとintの違いは何ですか?

  21. 21

    int main(int argc、char * argv [])とint main(int argc、char ** argv)の違いは何ですか

  22. 22

    char array [100]の違いは何ですか。およびchararray [100] = "";?

  23. 23

    C ++のchar ** argv []とは何ですか?

  24. 24

    C ++のchar()型とは何ですか?

  25. 25

    char *とchar []の違い(2)

  26. 26

    char **とchar [] []の違い

  27. 27

    charとintを定義するときのポインタの違いは何ですか?

  28. 28

    char *とchar []のscanfの違いは?

  29. 29

    Cでのchar []とchar *の違い

ホットタグ

アーカイブ