新数据类型
NATIVE TYPE | 32-BIT BACKING TYPE | 64-BIT BACKING TYPE |
---|---|---|
System.nint |
System.Int32 (int ) |
System.Int64 (long ) |
System.nuint |
System.UInt32 (uint ) |
System.UInt64 (ulong ) |
System.nfloat |
System.Single (float ) |
System.Double (double ) |
OLD TYPE IN SYSTEM.DRAWING | NEW DATA TYPE | DESCRIPTION |
---|---|---|
RectangleF |
CGRect |
Holds floating point rectangle information. |
SizeF |
CGSize |
Holds floating point size information (width, height) |
PointF |
CGPoint |
Holds a floating point, point information (X, Y) |
检查平台架构
if (IntPtr.Size == ) {
Console.WriteLine ("32-bit App");
} else if (IntPtr.Size == ) {
Console.WriteLine ("64-bit App");
}
Arrays and System.Collections.Generic
集合索引需要显示转换
public List<string> Names = new List<string>();
... public string GetName(nint index) {
return Names[(int)index];
}
DateTime 与 NSDate需要显示转换
下面两个扩展方法帮助实现隐式转换:
public static DateTime NSDateToDateTime(this NSDate date)
{
// NSDate has a wider range than DateTime, so clip
// the converted date to DateTime.Min|MaxValue.
double secs = date.SecondsSinceReferenceDate;
if (secs < -)
return DateTime.MinValue;
if (secs > )
return DateTime.MaxValue;
return (DateTime) date;
} public static NSDate DateTimeToNSDate(this DateTime date)
{
if (date.Kind == DateTimeKind.Unspecified)
date = DateTime.SpecifyKind (date, /* DateTimeKind.Local or DateTimeKind.Utc, this depends on each app */)
return (NSDate) date;
}