相关疑难解决方法(0)

字符串如何在.NET中传递?

当我传递string给一个函数时,是一个指向传递给字符串内容的指针,还是整个字符串传递给堆栈上的函数就像struct是?

.net string function parameter-passing

114
推荐指数
3
解决办法
4万
查看次数

假装.NET字符串是值类型

在.NET中,字符串是不可变的,并且是引用类型变量.对于较新的.NET开发人员来说,这通常会让他们感到惊讶,因为他们的行为可能会将他们误认为值类型对象.但是,除了StringBuilder用于长连接的实践之外,尤其如此.在循环中,有没有理由在实践中需要知道这种区别?

通过理解关于.NET字符串的价值参考区别与仅假装/误解它们是价值类型,可以帮助或避免哪些现实场景?

.net string pass-by-reference pass-by-value

7
推荐指数
1
解决办法
609
查看次数

字符串的值.net?

我知道.NET中的String是Object的子类,.NET中的Objects是引用类型.因此,下面的代码让我感到困惑.你能帮我理解一下这个区别吗?谢谢

我宣布了一个名为MyInt的类:

class MyInt
{
    int i;

    public int number
    {
        get { return i; }
        set { i = value; }
    }

    public override string ToString()
    {
        return Convert.ToString(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后是以下代码:

MyInt a = new MyInt();
MyInt b = new MyInt();
a.number = 5;
b.number = 7;
b = a;
a.number = 9;

Console.WriteLine(a.ToString());
Console.WriteLine(b.ToString());
Run Code Online (Sandbox Code Playgroud)

产量:

9  
9
Run Code Online (Sandbox Code Playgroud)

我理解这是因为这是一个Object = Reference Type,因此a和b现在引用堆上的同一个对象.

但这里发生了什么?

 string a1;
 string b1;
 a1 = "Hello";
 b1 = "Goodbye";
 b1 = a1;
 a1 = …
Run Code Online (Sandbox Code Playgroud)

.net string

3
推荐指数
1
解决办法
107
查看次数