2013-05-27 72 views
2

我正忙於將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。你們中的任何一個人都知道我應該在哪裏尋找發生此異常的地方?

+0

你能分享代碼嗎? – Oren

回答

0

我設法讓它工作,問題確實與整數模塊,我只是不夠寬。