這個問題在這里已經有了答案: 方法引數陣列默認值 [重復] (2 個回答) 2 小時前關閉。
我正在制作一個 RPG,并且我有一個怪物遭遇功能,我在其中為敵人的攻擊添加了重量和模式,并且在呼叫該功能時可以對其進行編輯:
陣列和變數是否可以同時作為同一個函式中的引數?如果沒有,是否有任何替代方案可以實作相同的目標?
static void MonsterEncounter(float hp = 10, float speed = 3, float attack = 2, string monName = "Monster", float exp = 200F, float gold = 30, bool boss = false, bool doubleBattle = false, bool twoEnemy = false, float hpTwo = 10, float speedTwo = 10, float attackTwo = 1, string monNameTwo = "Monster 2", int teamMate = 0, string status = "Fine", string powerAttack = "Super Hit", float powerAttackHit = 10, float powerAttackHeal = 2, bool isHealing = false, bool isDefending = false, int waitTime = 0, string statusAfflict = "null", bool hasWeight = true, bool hasPattern = false, string statusTwo = "Fine",string powerAttackTwo = "Super Hit", float powerAttackHitTwo = 10, float powerAttackHealTwo = 2, bool isHealingTwo = false, bool isDefendingTwo = false, int waitTimeTwo = 0,string statusAfflictTwo = "null", bool hasWeightTwo = true, bool hasPatternTwo = false, int[] patternTwo = {1, 1, 1, 1, 1,1 ,1, 1, 1, 1}, int[] weight = {0, 0, 0, 0}, int[] pattern = {1, 1, 1, 1, 1,1 ,1, 1, 1, 1}, int[] weightTwo = {0, 0, 0, 0})
但這是相關的:
int[] patternTwo = {1, 1, 1, 1, 1,1 ,1, 1, 1, 1}, int[] weight = {0, 0, 0, 0}, int[] pattern = {1, 1, 1, 1, 1,1 ,1, 1, 1, 1}, int[] weightTwo = {0, 0, 0, 0}
但我一直在這里遇到同樣的錯誤:
main.cs(4265,254): error CS1525: Unexpected symbol '{'
main.cs(4265,255 ): error CS1737: Optional parameter cannot precede required parameters
main.cs(4265,254): error CS1525: Unexpected symbol '1'
我嘗試以不同的方式宣告變數:
int[] patternTwo = new int[10] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, int[] weight = new int[4] {0, 0, 0, 0}, int[] pattern = new int[10] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, int[] weightTwo = new int[4] {0, 0, 0, 0}
但它仍然產生錯誤:
main.cs(4265,255 ): error CS1736: The expression being assigned to optional parameter 'patternTwo' must be a constant or default value
main.cs(4265,255 ): error CS1736: The expression being assigned to optional parameter 'weight' must be a constant or default value
main.cs(4265,255 ): error CS1736: The expression being assigned to optional parameter 'pattern' must be a constant or default value
main.cs(4265,255 ): error CS1736: The expression being assigned to optional parameter 'weightTwo' must be a constant or default value
我通過谷歌搜索,但我找到的頁面要么使用不同的編程語言,要么沒有涵蓋我的要求。
我可以將陣列作為引數傳遞給 Java 中帶有可變引數的方法嗎?
具有無限引數的 c# 方法或具有陣列或串列的方法?
將陣列作為引數傳遞(C# 編程指南)
在 C# 中將陣列作為引數傳遞
陣列和變數是否可以同時作為同一個函式中的引數?如果沒有,是否有任何替代方案可以實作相同的目標?
uj5u.com熱心網友回復:
這不是“真正的”解決方案,而是一種解決方法。您可以將默認陣列值設定為null,然后使用 if 陳述句來設定您想要的陣列值
static void MonsterEncounter(float hp = 10, /*[...]*/ int[] patternTwo = null, int[] weight = null, int[] pattern = null, int[] weightTwo = null){
if (patternTwo == null) { pattern = new int [] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; }
//[...]
if (weightTwo == null) { weightTwo = new int[] { 0, 0, 0, 0 }; }
}
否則,您也可以使用多載。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/337294.html
