2016-07-28 12 views
-2
static void Main(string[] args) 
{ 
    string s = new string("abc"); 
    string s2 = "abc"; 
} 

このプログラムは最初の行にコンパイルエラーがあります。文字列リテラルは文字列コンストラクタで受け付けられませんが、2行目でOKがコンパイルされます。C#:なぜ文字列をパラメータとして文字列リテラルで構築できないのですか?

1行目と2行目の違いは何ですか?それらは両方ともコンストラクタであり、1行目にコンパイルエラーがあるのはなぜですか?

+1

を、一致するコンストラクタがありませんus/library/system.string.aspx ''私は彼らが両方のコンストラクタだと思います。 ' - いいえ、最初の行だけがコンストラクタを使用しています。 2行目は単純に値を代入します。 – David

+2

あなたは明らかに質問をする前に文書を読んだので、一致するコンストラクタがないことがわかりました...回答として正確に何を探しているのかを明確にしてください。なぜそれがそのようにしたかという歴史的な情報?他に何か? –

答えて

0

C#文字列のコンストラクタのみ文字列はそのうちの一つではありませんこれらの引数受け入れる:https://msdn.microsoft.com/en-:まあ

unsafe public String(char*); 
     public String(char[]); 
unsafe public String(sbyte*); 
     public String(char, int); 
unsafe public String(char*, int, int); 
     public String(char[], int, int); 
unsafe public String(sbyte*, int, int); 
unsafe public String(sbyte*, int, int, Encoding); 

http://www.dotnetperls.com/string-constructor

関連する問題