通過「參考」可以將值分配給值類型的最佳做法是什麼?在我的情況下,我需要這個可以通過應用內控制檯爲int,float等賦值。我不想給包含值類型的對象提供引用,因爲這不會讓我的控制檯管理器變得通用,並且添加新命令將是一場噩夢。另外我不能使用指針,因爲在我的情況下,不安全模式是不可能的。使值類型表現爲參考
因爲我的CLR的一點理解,我想是這樣的:
int i = 1;
object o = i;
o = (object) 5;
Console.WriteLine(i);// prints original value of i, 1. I expected 5;
所以它沒有工作,所以我發現這個類:
using System.Collections.Generic;
using System.Collections;
using System;
public class Pointer <T>
{
private Func<T> getter;
private Action<T> setter;
public Pointer (Func<T> getter, Action<T> setter)
{
this.getter = getter;
this.setter = setter;
}
public T Value
{
get { return getter(); }
set { setter(value); }
}
}
多虧了它,我可以賦值值的類型喜歡參考這樣的:
int i = 1;
Pointer ptr = new Pointer<int>(()=>i, x=>{i=x;})
ptr.Value = 5;
Console.WriteLine(i);// prints as expected 5;
工程,但你可以看到它是非常不雅觀方式(至少我認爲它不是)。
所以問題依然存在。這種情況下的最佳做法是什麼?
乾杯
創建您自己的自定義類型aka類 –
爲什麼地球上你會需要這樣做? –
@Ehsan Sajjad,這不是一個案例。客戶希望能夠通過應用內控制檯更改代碼中的不同變量。達林如果你閱讀我的文章,你會發現,或者你有其他方式的優雅方式。 –