我正忙於將IronPython移植到Windows Phone 8,現在我遇到了一個問題,我無法檢查一個數字是否爲null或不在python腳本中。IronPython number == null?
舉例來說,如果我嘗試:
testnum a = 0.1
if testnum == None:
print "Value is null
然後我收到以下錯誤:
An exception of type 'System.ArgumentNullException' occurred in Microsoft.Dynamic.DLL and wasn't handled before a managed/native boundary
Value cannot be null.
Parameter name: y
我確定,出現這種情況的原因是因爲在「FEATURE_NUMERICS」未啓用,因爲WP做沒有System.Numerics.BigInteger和System.Numerics.Complex。在目前的來源看來,這兩個人然後手動實施。
我已經改變了所有的「==」 opertors在BigInterger實施支持空如下面的例子:
public static bool operator ==(BigInteger x, BigInteger y) {
if (object.ReferenceEquals(x, null) || object.ReferenceEquals(y, null))
return false;
return Compare(x, y) == 0;
}
我雖然已經意識到這其實是相當無用的,因爲Ÿ將永遠不會有任何形式的一個包含空值的數字。原因是(我假設)IPY解析python腳本,並決定應用哪種類型的值以及何時會看到一個數字,並且null會自動拋出一個'System.ArgumentNullException',因此永遠不會將它發送到BigInterger 。
我現在的問題是,我不知道這個異常來自哪裏,我假設解析器中的某個地方。我的想法是,當我發現原點做了上面我做的事情時,我只是簡單地返回false。你們中的任何一個人都知道我應該在哪裏尋找發生此異常的地方?
你能分享代碼嗎? – Oren