3 // Copyright (c) Microsoft Corporation. All rights reserved.
6 namespace System.Runtime.InteropServices {
9 using System.Runtime.CompilerServices;
10 using System.Runtime.Versioning;
13 [System.Runtime.InteropServices.ComVisible(true)]
14 public struct ArrayWithOffset
16 //private ArrayWithOffset()
18 // throw new Exception();
21 [System.Security.SecuritySafeCritical] // auto-generated
22 public ArrayWithOffset(Object array, int offset)
27 m_count = CalculateCount();
30 public Object GetArray()
35 public int GetOffset()
40 public override int GetHashCode()
42 return m_count + m_offset;
45 public override bool Equals(Object obj)
47 if (obj is ArrayWithOffset)
48 return Equals((ArrayWithOffset)obj);
53 public bool Equals(ArrayWithOffset obj)
55 return obj.m_array == m_array && obj.m_offset == m_offset && obj.m_count == m_count;
58 public static bool operator ==(ArrayWithOffset a, ArrayWithOffset b)
63 public static bool operator !=(ArrayWithOffset a, ArrayWithOffset b)
71 Array a = m_array as Array;
73 throw new ArgumentException ();
75 var total = a.Rank * a.Length;
76 return total - m_offset;
79 [System.Security.SecurityCritical] // auto-generated
80 [ResourceExposure(ResourceScope.None)]
81 [MethodImplAttribute(MethodImplOptions.InternalCall)]
82 private extern int CalculateCount();
85 private Object m_array;