QA@IT
«回答へ戻る

脱字追加

1183
 
 (3) ちなみに空白の場合 psi.Arguments = @"1 2 3 "" """;
 
-rgs.Length: 4
+args.Length: 4
 args[0]: 1
 isStringEmpty: False, isSpace: False
 args[1]: 2

sample.exe が .NET アプリで、内部的に String.Empty となるようにできれば良いということであれば、質問者さんが最初に質問欄に書いたコードで望む結果になるはずなのですが。

以下のような簡単なコンソールアプリを作って、それを別のコンソールアプリから質問者さんが書いたコードと全く同様にして実行させて期待通りの結果になることを確認できました。何が違うのでしょうね?

class Program
{
    static void Main(string[] args) 
    {
        Console.WriteLine("args.Length: {0}", args.Length);
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine("args[{0}]: {1}", i, args[i]);

            bool isStringEmpty = (args[i] == string.Empty);
            bool isSpace = (args[i] == " ");
            Console.WriteLine("isStringEmpty: {0}, isSpace: {1}", isStringEmpty, isSpace);
        }

        Console.Read();
    }
}

(1) 質問者さんの最初のコード psi.Arguments = @"1 2 3 """;

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: True, isSpace: False

(2) arika_onzk さんの回答 psi.Arguments = @"1 2 3 """"";

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: True, isSpace: False

(3) ちなみに空白の場合 psi.Arguments = @"1 2 3 "" """;

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: False, isSpace: True

sample.exe が .NET アプリで、内部的に String.Empty となるようにできれば良いということであれば、質問者さんが最初に質問欄に書いたコードで望む結果になるはずなのですが。

以下のような簡単なコンソールアプリを作って、それを別のコンソールアプリから質問者さんが書いたコードと全く同様にして実行させて期待通りの結果になることを確認できました。何が違うのでしょうね?


```
class Program
{
    static void Main(string[] args) 
    {
        Console.WriteLine("args.Length: {0}", args.Length);
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine("args[{0}]: {1}", i, args[i]);

            bool isStringEmpty = (args[i] == string.Empty);
            bool isSpace = (args[i] == " ");
            Console.WriteLine("isStringEmpty: {0}, isSpace: {1}", isStringEmpty, isSpace);
        }

        Console.Read();
    }
}
```


(1) 質問者さんの最初のコード psi.Arguments = @"1 2 3 """;

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: True, isSpace: False

(2) arika_onzk さんの回答 psi.Arguments = @"1 2 3 """"";

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: True, isSpace: False

(3) ちなみに空白の場合 psi.Arguments = @"1 2 3 "" """;

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: False, isSpace: True

回答を投稿

sample.exe が .NET アプリで、内部的に String.Empty となるようにできれば良いということであれば、質問者さんが最初に質問欄に書いたコードで望む結果になるはずなのですが。

以下のような簡単なコンソールアプリを作って、それを別のコンソールアプリから質問者さんが書いたコードと全く同様にして実行させて期待通りの結果になることを確認できました。何が違うのでしょうね?

class Program
{
    static void Main(string[] args) 
    {
        Console.WriteLine("args.Length: {0}", args.Length);
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine("args[{0}]: {1}", i, args[i]);

            bool isStringEmpty = (args[i] == string.Empty);
            bool isSpace = (args[i] == " ");
            Console.WriteLine("isStringEmpty: {0}, isSpace: {1}", isStringEmpty, isSpace);
        }

        Console.Read();
    }
}

(1) 質問者さんの最初のコード psi.Arguments = @"1 2 3 """;

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: True, isSpace: False

(2) arika_onzk さんの回答 psi.Arguments = @"1 2 3 """"";

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: True, isSpace: False

(3) ちなみに空白の場合 psi.Arguments = @"1 2 3 "" """;

rgs.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: False, isSpace: True

sample.exe が .NET アプリで、内部的に String.Empty となるようにできれば良いということであれば、質問者さんが最初に質問欄に書いたコードで望む結果になるはずなのですが。

以下のような簡単なコンソールアプリを作って、それを別のコンソールアプリから質問者さんが書いたコードと全く同様にして実行させて期待通りの結果になることを確認できました。何が違うのでしょうね?


```
class Program
{
    static void Main(string[] args) 
    {
        Console.WriteLine("args.Length: {0}", args.Length);
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine("args[{0}]: {1}", i, args[i]);

            bool isStringEmpty = (args[i] == string.Empty);
            bool isSpace = (args[i] == " ");
            Console.WriteLine("isStringEmpty: {0}, isSpace: {1}", isStringEmpty, isSpace);
        }

        Console.Read();
    }
}
```


(1) 質問者さんの最初のコード psi.Arguments = @"1 2 3 """;

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: True, isSpace: False

(2) arika_onzk さんの回答 psi.Arguments = @"1 2 3 """"";

args.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: True, isSpace: False

(3) ちなみに空白の場合 psi.Arguments = @"1 2 3 "" """;

rgs.Length: 4
args[0]: 1
isStringEmpty: False, isSpace: False
args[1]: 2
isStringEmpty: False, isSpace: False
args[2]: 3
isStringEmpty: False, isSpace: False
args[3]:
isStringEmpty: False, isSpace: True