如何检查值类型的值是否为 IntPtr.Zero
How do I check if a value type has a value of IntPtr.Zero
所以我正在编写一个 Xamarin
应用程序并且我构建了一个 CustomRenderer
现在我的方法:
horizontalScrollView.ScrollTo(this.Width, 0);
一直抛出异常:
System.ArgumentException: 'jobject' must not be IntPtr.Zero.
10-21 12:10:41.898 E/AndroidRuntime(15053): Parameter name: jobject
10-21 12:10:41.898 E/AndroidRuntime(15053): at Android.Runtime.JNIEnv.CallIntMethod (intptr,intptr) [0x00010] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:378
10-21 12:10:41.898 E/AndroidRuntime(15053): at Android.Views.View.get_Width ()
所以查看异常并从我的断点我发现问题是当我将鼠标悬停在 this.Width
上时我得到 'jobject' must not be IntPtr.Zero
而不是 integer
所以我尝试防御针对此编写代码并执行:
if (this.Width != IntPtr.Zero)
{
horizontalScrollView.ScrollTo(this.Width, 0);
}
但这没有编译并给我错误:
Operator '!=' cannot be applied to operands of type 'int' and
'IntPtr'
所以我的问题是。有没有办法检查 value type
是否等于 IntPtr.Zero
?
也许您必须对照工作项目而不是对照 属性 值 'width'。
由于您正在使用自定义渲染器,我假设您正在使用 Xamarin.Forms。
您无法在此处检查 IntPtr.Zero
。 IntPtr
由 Xamarin.Forms 内部设置。您通常无法访问错误的指针。所以你看不到它在那里,但是当你访问 Width
属性 时你会收到一个错误,因为它在内部与那个指针一起工作。
此错误可能有两种原因:
- 您没有正确初始化控件。所以它包含空指针。
- Xamarin.Forms 中存在错误。针对 Xamarin.Forms 的其他版本测试您的代码。如果该错误未在其他版本中出现,或者您认为这是一个错误,则将其提交 here.
所以我正在编写一个 Xamarin
应用程序并且我构建了一个 CustomRenderer
现在我的方法:
horizontalScrollView.ScrollTo(this.Width, 0);
一直抛出异常:
System.ArgumentException: 'jobject' must not be IntPtr.Zero. 10-21 12:10:41.898 E/AndroidRuntime(15053): Parameter name: jobject 10-21 12:10:41.898 E/AndroidRuntime(15053): at Android.Runtime.JNIEnv.CallIntMethod (intptr,intptr) [0x00010] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:378 10-21 12:10:41.898 E/AndroidRuntime(15053): at Android.Views.View.get_Width ()
所以查看异常并从我的断点我发现问题是当我将鼠标悬停在 this.Width
上时我得到 'jobject' must not be IntPtr.Zero
而不是 integer
所以我尝试防御针对此编写代码并执行:
if (this.Width != IntPtr.Zero)
{
horizontalScrollView.ScrollTo(this.Width, 0);
}
但这没有编译并给我错误:
Operator '!=' cannot be applied to operands of type 'int' and 'IntPtr'
所以我的问题是。有没有办法检查 value type
是否等于 IntPtr.Zero
?
也许您必须对照工作项目而不是对照 属性 值 'width'。
由于您正在使用自定义渲染器,我假设您正在使用 Xamarin.Forms。
您无法在此处检查 IntPtr.Zero
。 IntPtr
由 Xamarin.Forms 内部设置。您通常无法访问错误的指针。所以你看不到它在那里,但是当你访问 Width
属性 时你会收到一个错误,因为它在内部与那个指针一起工作。
此错误可能有两种原因:
- 您没有正确初始化控件。所以它包含空指针。
- Xamarin.Forms 中存在错误。针对 Xamarin.Forms 的其他版本测试您的代码。如果该错误未在其他版本中出现,或者您认为这是一个错误,则将其提交 here.