[英]Dynamic variable names in C#?
(我並不需要一個實際的功能,但是我只是想知道。)
想象一下我在傳遞bool[,]
函數。 根據情況,此bool[,]
名為grid1
或grid2
。
我想知道我是否可以做以下事情:
void CheckGrid(bool[,] grid, int number)
{
for (int x = 0; x <= gridXmax - 1; x++)
{
for (int y = 0; y <= gridYmax - 1; y++)
{
if(grid + number[x,y]) //this will check against grid1 or grid2, depending on int number
//logic depends on whether it's grid1 or grid2
}
}
}
根據其他語言的問題猜測,可能是不可能的。 但是你永遠不知道:)
我很可能在這里遺漏了一些明顯的東西-我並不是很經驗豐富。
您可以創建一個網格數組,然后使用數字值進行檢查。
List<bool[,] grids = new List<bool[,]>();
然后
if (grids[number][x,y])...
否- 對象沒有名稱,只有變量具有名稱。 因此,盡管您傳遞了對數組的引用,但是該方法無法知道您是偶然使用了名為grid1
的變量作為參數還是使用名為grid2
的變量。
通常,當有類似這樣的問題時,答案是說您可以使用反射來按名稱訪問成員變量,但這通常不是一個好主意-使用單個變量作為集合是一個更好的主意。 然而,在你的問題是不太清楚你想要做的反正...如果它試圖確定那么這是一般的絕對不可行“的對象的名稱”。
最好將一個標志傳遞給函數,這將使您可以根據要處理的是grid1還是grid2來更新邏輯。
當您使用類似$$ var之類的東西時,PHP中會存在這種情況,其中$ var將容納grid1並變成$ grid1
我唯一可以建議的是在字典中使用鍵/值對並將數字連接為“網格”
向數組添加維度。
void CheckGrid(bool[,,] grid, int number)
{
for (int x = 0; x <= gridXmax - 1; x++)
{
for (int y = 0; y <= gridYmax - 1; y++)
{
if(grid[number, x,y]) //this will check against grid1 or grid2, depending on int number
//logic depends on whether it's grid1 or grid2
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.