가능한 중복 :이
How do I assign by “reference” to a class field in c#?C#에서 정수에 대한 참조를 저장하는 방법은 무엇입니까?
안녕하십니까 - 어떻게이 일을 말해? 기본적으로 정수형 참조 형식이 필요합니다 (int *는 C++에서 작동합니다)
class Bar
{
private ref int m_ref; // This doesn't exist
public A(ref int val)
{
m_ref = val;
}
public void AddOne()
{
m_ref++;
}
}
class Program
{
static void main()
{
int foo = 7;
Bar b = new Bar(ref foo);
b.AddOne();
Console.WriteLine(foo); // This should print '8'
}
}
나는 복싱을 사용해야합니까?
편집 : 아마도 더 구체적이어야합니다. BitAccessor 클래스를 작성 중이므로 개별 비트에 액세스 할 수 있습니다. 여기에 내 원하는 사용이다 :
class MyGlorifiedInt
{
private int m_val;
...
public BitAccessor Bits {
return new BitAccessor(m_val);
}
}
사용법 :
BitAccessor이 m_val을 수정할 수 있으려면MyGlorifiedInt val = new MyGlorifiedInt(7);
val.Bits[0] = false; // Bits gets a new BitAccessor
Console.WriteLine(val); // outputs 6
, 그것에 대한 참조를 필요로한다. 그러나 원하는 정수에 대한 참조만으로이 BitAccessor를 여러 곳에서 사용하고 싶습니다.
여기에 당신의 목표는 무엇입니까? 이것은 기본적으로 관리되는 코드의 전체 개념에 위배됩니다. 다른 클래스에'foo'에 대한 참조를 저장할 수 있다면'main'과 연결되지 않은 다른 클래스에서'main'이 종료되고'foo'가 살고있는 스택 프레임이 파괴되면 어떻게 될까요? – tzaman
@ tzaman, 제 편집이 제 의도를 분명히 했습니까? @abatishchev - 나는하고 싶습니다만, 대답 중 어느 것도 제가 찾고있는 것을하지 않습니다. 아마 불가능합니다. –
왜 안전하지 않은 포인터로 원하는 것을 할 수 있습니까? C++에서 포인터가 트릭을 수행한다고 언급 한 경우조차도 말입니다. –