Olası Çoğalt:
How do I assign by “reference” to a class field in c#?C# içindeki bir tamsayıya nasıl başvuru yapılır?
Merhaba herkes - nasıl bu işi yapmak için söyle? Temelde,
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'
}
}
Ben boks kullanmak zorunda mı (* C++ çalışacak int) tamsayı referans türüne ihtiyacınız?
Düzenleme: Belki de daha spesifik olmalıydım. Ben sadece bireysel bitlere erişime izin veren bir BitAccessor sınıfı yazıyorum. İşte benim istenen kullanımı:
class MyGlorifiedInt
{
private int m_val;
...
public BitAccessor Bits {
return new BitAccessor(m_val);
}
}
Kullanımı:
BitAccessor m_val değiştirmeye muktedir içinMyGlorifiedInt val = new MyGlorifiedInt(7);
val.Bits[0] = false; // Bits gets a new BitAccessor
Console.WriteLine(val); // outputs 6
, bunun bir başvuru gerekiyor. Ancak, bu BitOccessor'u birçok yerde kullanmak istiyorum, sadece istenen tamsayıya referansla.
Amacınız nedir? Bu temelde yönetilen kod fikrine karşı çıkıyor; eğer yaşamı 'ana' ile bağlantılı olmayan başka bir sınıfta bir 'foo'yu saklayabilseydiniz,' ana 'çıktığında ne olur ve' foo 'nun yaşadığı yığın çerçevesi ne olur? – tzaman
@tzaman, düzenlemelerim niyetimi açıkladı mı? @abatishchev - Ben isterdim, ama cevapların ikisi de tam olarak aradığım şeyi yapmaz. Belki bu mümkün değildir. –
Neden güvensiz işaretçiler aradığınızı yapıyor? C++ 'da olsaydı göstericilerin hile yapmasını bile söylediniz. –