2010-07-15 3 views
0

У меня есть метод в Java:Преобразовать метод из Java в C# .net

public int getInt() { 
IntByReference ibr = new IntByReference(); 
if (CFLib.INSTANCE.CFNumberGetValue(this, 4, ibr)) 
    return ibr.getValue(); 
return -1; } 

здесь Референс:

http://developer.apple.com/iphone/library/documentation/CoreFoundation/Reference/CFNumberRef/Reference/reference.html

Как я могу скопировать этот раз для C# .net ?

ответ

1

Это 4 соответствует значению перечисления kCFNumberSInt64Type. Почему это было забито в (32-битное) целое число? Во всяком случае, похоже, что CFNumberGetValue хочет получить свой третий параметр void* (C++).

public int getInt() { 
    int i; 
    if (CFLib.INSTANCE.CFNumberGetValue(this, kCFNumberSInt32Type, (IntPtr)i)) 
     return i; 
    return -1; 
} 

Я не знаю, если нужно что-то делать с первым параметром, как я понятия не имею, что this есть.

+0

Проблема в том, что в C# нет CFLib, поэтому я должен найти другой способ сделать это. «Это» - это значение, которое должно быть преобразовано – Kovu

+0

Если вы не собираетесь использовать библиотеку Core Foundation, просто замените все ссылки и вызовы CFNumber эквивалентными примитивами C#. В этом случае он выглядит так, как будто ваш весь класс (независимо от этого) должен быть заменен на int (или 'long'). – Gunslinger47

Смежные вопросы