当它基本上是一个类时,为什么我们必须使用ref作为一种String?

Kar*_*hik 0 .net c# oop string

类是引用类型,而Struct是值类型.

这意味着我不需要为每种类型的参数显式指定ref.

我的问题是,

为什么我们必须为字符串类型指定ref关键字,这基本上是一种类?

请找到以下示例

public partial class StringManupulation : Form
{
    public StringManupulation()
    {
        InitializeComponent();

        String value = "Hello ";

        Concatenate( value );
        MessageBox.Show( value );

        Concatenate( ref value );
        MessageBox.Show( value );
    }

    /// <summary>
    /// Does not work
    /// </summary>
    /// <param name="value"></param>
    public void Concatenate( String value )
    {
        value = string.Concat( value, "StackOverflow" );
    }

    /// <summary>
    /// Works! 
    /// </summary>
    /// <param name="value"></param>
    public void Concatenate( ref String value )
    {
        value = string.Concat( value, "StackOverflow" );
    }
 }
Run Code Online (Sandbox Code Playgroud)

Cod*_*aos 6

这不是特定于字符串,这是任何参数的情况.如果要更改参数中传递的变量,则需要通过引用传递它.

传递值时,只能更改传入的引用类型实例的内容.字符串没有可变内容.