【问题标题】:Why string str = new string("abc") doesn't pass compiler?为什么 string str = new string("abc") 没有通过编译器?
【发布时间】:2011-09-06 15:12:03
【问题描述】:

鉴于public String(char*) 为什么我们不能使用以下语句?

string str = new string("aaa");

错误 1 ​​

最好的重载方法匹配 'string.String(char*)' 有一些 无效的 参数 C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs 19 26 ConsoleApplication2

错误 2

参数 1:无法从 “字符串”到 'char*' C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs 19 37 ConsoleApplication2

【问题讨论】:

    标签: c# string


    【解决方案1】:

    简单使用:

     string str = "aaa";
    

    您不需要new 一个字符串。

    “aaa”是一个字符串。它不是char *
    char *unsafe 代码一起使用。

    【讨论】:

      【解决方案2】:

      看看这可能会解决您的疑问C# New String Constructor

      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);
      

      【讨论】:

      • 在发布我的问题之前,我确实检查了这些信息。在阅读了这个帖子的消息后,我有了基本的想法。 -- 谢谢
      • @q0987 - 当您看到需要传递 char 数组的文档时,您无法传递字符串值...... ...
      【解决方案3】:

      char* 类型用于不安全指针——指向不属于 .Net 托管框架的对象。当您在代码中放置文字字符串 "aaa" 时,这是一个托管对象。 string 在 C# 中不是 char*

      【讨论】:

        【解决方案4】:

        因为这并不意味着在安全代码中使用...

        在 C# 中,此构造函数仅在不安全代码的上下文中定义。

        来自:http://msdn.microsoft.com/en-us/library/6y4za026.aspx

        如果你需要构造一个字符串,你可以使用文字 decleration..

        string str = "aaa";
        

        【讨论】:

          【解决方案5】:

          您正在尝试使用字符串作为参数调用构造函数。

          编译器告诉你没有一个字符串作为参数的字符串构造函数。

          【讨论】:

          • 所以在 C# 中“aaa”并不意味着 char* 的类型?
          • @g0987 不,它始终是一个 System.String,它是 UTF-16 编码的字符串
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-20
          • 2014-01-09
          • 2016-01-21
          • 2016-06-22
          • 1970-01-01
          • 2015-11-21
          相关资源
          最近更新 更多