[英]Optional Parameters causing a InternalErrorException
我開始使用可選參數(因為我來自java,以前從未嘗試過使用它們),並且遇到了以下問題:
Unhandled Exception: Mono.CSharp.InternalErrorException: Internal error
at Mono.CSharp.MethodGroupExpr.IsApplicable (Mono.CSharp.ResolveContext ec, Mono.CSharp.Arguments& arguments, Int32 arg_count, System.Reflection.MethodBase& method, System.Boolean& params_expanded_form) [0x00000] in <filename unknown>:0
at Mono.CSharp.MethodGroupExpr.OverloadResolve (Mono.CSharp.ResolveContext ec, Mono.CSharp.Arguments& Arguments, Boolean may_fail, Location loc) [0x00000] in <filename unknown>:0
at Mono.CSharp.New.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec, ResolveFlags flags) [0x00000] in <filename unknown>:0
at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Assign.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.SimpleAssign.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec, ResolveFlags flags) [0x00000] in <filename unknown>:0
at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.ExpressionStatement.ResolveStatement (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.StatementExpression.Resolve (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Block.Resolve (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.If.Resolve (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Block.Resolve (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.ToplevelBlock.Resolve (Mono.CSharp.FlowBranching parent, Mono.CSharp.BlockContext rc, Mono.CSharp.ParametersCompiled ip, IMethodData md) [0x00000] in <filename unknown>:0
導致此問題的代碼在這里:
Me = new UserAccount(
name: response["first_name"] as string,
age: DateToAge(response["birthday"] as string),
facebookID: response["id"] as string,
email: response["email"] as string,
gender: (response["gender"] as string == "male") ? 0 : 1
);
其中“響應”是Dictionary<string, object>
Dictionary<string, object> response = FacebookHelper.Deserialize(jsonString);
而UserAccount類在這里:
public class UserAccount {
public string SessionKey;
public string FacebookID;
public string Name;
public string Email;
public int Age;
public int Gender;
public GeoLocation Location;
public Texture Avatar;
public UserAccount(string name, int age, int gender, string email = "", GeoLocation location = null, string sessionKey = "", string facebookID = "", Texture avatar = null) {
Name = name;
Email = email;
Age = age;
Gender = gender;
Location = location;
SessionKey = sessionKey;
FacebookID = facebookID;
Avatar = avatar;
}
}
誰能指出我解決這個問題的正確方向?
這是一個長期存在的真正的編譯器錯誤。 Unity使用的是舊版本的Mono的分支。 它是由於命名參數而發生的。 就個人而言,有時我可以使用命名參數,但是在某些情況下,它只是崩潰在完全正確的代碼上。 不幸的是,我只能為您提供的建議是不要在Unity Mono編譯器中使用命名參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.