来自c++指针的c#动态变量
本文关键字:动态 变量 c++ 指针 来自 | 更新日期: 2023-09-27 18:11:26
超级简单的c#问题,因为我想更好地学习这门语言。我来自c++背景,对没有指针的解决方案有点不确定。
例如,如果我想要一个变量的引用,我可以将其声明为
class Foo{
private:
SomeClassType* sct;
SomeOtherClass* soc;
public:
Foo(SomeClassType* xSct, SomeOtherClass* xSoc) : sct(xSct), soc(xSoc) {}
}
所以在c#中,我必须使用我猜要么是静态引用,要么是其他动态分配方式?我不希望有100个这样的东西浮在外面。我无论如何也无法在谷歌上找到合适的词来解决这个问题。
在c#中等效的是什么?
超级简单的c#问题
其实这是一个相当深奥的问题。
我来自c++背景,我对没有指针的解决方案有点不确定。
c#确实有指针,但它们几乎从不被使用。
例如,如果我想要对变量
进行单个引用
问题就在这里。停止思考我需要一个变量的引用,所以我需要一个指针。是的,指针是对变量的引用的实现,但在c#中,这是非常错误的思考方式。在c#中,可以以几种不同的方式引用变量,但是几乎不需要。你在c#中所做的是引用对象,而不是引用变量。
在c#中,如果值的类型是引用类型,则自动成为对该类型对象的引用。
:
class C
{
public int x;
}
类型C的值是对C实例的引用;这就是c#中"类"的含义。所以你可以说:
class D
{
public C c;
}
D的实例有一个类型为c的字段,这是一个变量。变量的值是对c类型实例的引用。该实例有一个int类型的变量x;该变量的值不是对任何东西的引用,它只是一个整数
c#的引用将取代这里的指针:
class Foo {
SomeClassType sct;
SomeOtherClass soc;
public Foo(SomeClassType xSct, SomeOtherClass xSoc) {
// Note: No initializer list, we have to do those assignments manually
sct = xSct;
soc = xSoc;
}
}
在大多数情况下,它们的作用几乎是一样的(异常是指针算术,在这里是没有用的)。对这些实例的成员的访问是总是在c#中用点.
完成;C++中没有->
在某种程度上,你可以像对待c++引用一样对待它们,只是你可以重新分配它们。