Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仍在使用;公共字符串(字符*值)";现在?_C#_String_Unsafe_Null Terminated_Unsafe Pointers - Fatal编程技术网

C# 仍在使用;公共字符串(字符*值)";现在?

C# 仍在使用;公共字符串(字符*值)";现在?,c#,string,unsafe,null-terminated,unsafe-pointers,C#,String,Unsafe,Null Terminated,Unsafe Pointers,我发现(在字符串“class”(.NET)的(定义)内部): 评注中写道: // Parameters: // value: // A pointer to a null-terminated array of Unicode characters. 我的问题是: 我只能在不安全的上下文中使用它吗?现在使用该字符串(char*value)是否仍然有意义,或者这只是基于“ABC\0”(该字符串的终止)的过去的遗物 如果我可以/应该使用它,这种方法的情况是怎样的

我发现(在字符串“class”(.NET)的(定义)内部):

评注中写道:

    // Parameters:
    //   value:
    //     A pointer to a null-terminated array of Unicode characters.
我的问题是:

我只能在不安全的上下文中使用它吗?现在使用该字符串(char*value)是否仍然有意义,或者这只是基于“ABC\0”(该字符串的终止)的过去的遗物


如果我可以/应该使用它,这种方法的情况是怎样的

我们有两种可能的情况:

  • 您不需要使用不安全代码。如果您不需要使用不安全代码,请不要使用不安全代码。您永远不会使用此字符串构造函数

  • 您需要使用不安全代码。如果出于某种原因需要使用不安全代码和
    char*
    ,此方法允许您在完成不安全操作后将
    char*
    转换为标准.NET字符串


  • 不安全代码的可能用例超出了本问题的范围。

    @Nishant。我想到了“不安全{char c=’g’;char *PC= & c;控制台。Writeline(c);}”它看起来比C/C++更胜于C,尤其是语法让我想起了过去的过去,用来将人们从C++代码中解压到C代码。我想,在一些罕见的情况下,P/调用非托管代码并返回以null结尾的字符串可能会很有用,但通常情况下,您可以进行设置,以便封送处理程序为您处理。请注意,它是C#
    字符
    ,因此是unicode字符串。。。在C/C++中,它应该是
    wchar\t
    。如果您想要“8位字符串”,则另一组构造函数接受
    sbyte*
        // Parameters:
        //   value:
        //     A pointer to a null-terminated array of Unicode characters.