public class NaturalComparer : IComparer<string>
{
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
public static int Compare(string x, string y)
{
return StrCmpLogicalW(x, y);
}
int IComparer<string>.Compare(string x, string y)
{
return StrCmpLogicalW(x, y);
}
}
public class TestApp
{
public static void Main()
{
// Используем явную реализацию
var arr = new [] { "a5", "a1", "a10", "a3", "a7" };
Array.Sort(arr); // a1, a10, a3, a5, a7
Array.Sort(arr, new NaturalComparer()); // a1, a3, a5, a7, a10
// Используем статический метод
var list = new List<string> { "a5", "a1", "a10", "a3", "a7" };
const string max = "a4";
var minElements1 = list.Where(s => s.CompareTo(max) < 0).ToList(); // a1, a10, a3
var minElements2 = list.Where(s => NaturalComparer.Compare(s, max) < 0).ToList(); // a1, a3
}
}
Для продажи цифровых продуктов через игру, представленную в Google Play, необходимо использовать систему продажи контента Google Play.
При продаже цифровых продуктов через другие виды приложений, представленные в Google Play, необходимо также использовать систему продажи контента Google Play. Исключения составляют следующие случаи:
- продажа нецифровых товаров;
- продажа цифрового контента, который может использоваться вне приложения (например, треков, которые можно воспроизводить в других проигрывателях).
public class PlayerScript : MonoBehaviour
{
private Rigidbody2d _rigidbody2d;
private void Start()
{
_rigidbody2d = GetComponent<Rigidbody2d>();
}
// остальной код
}
class MyClass
{
public void Test()
{ }
public static void TestStatic()
{ }
}
struct MyStruct
{
public void Test()
{ }
public static void TestStatic()
{ }
}
class Program
{
static void Main(string[] args)
{
MyClass.TestStatic();
MyStruct.TestStatic();
var c = new MyClass();
c.Test();
var s = new MyStruct();
s.Test();
}
}
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 43 (0x2b)
.maxstack 1
.locals init ([0] class ClassOrStructApp.MyClass c,
[1] valuetype ClassOrStructApp.MyStruct s)
IL_0000: nop
IL_0001: call void ClassOrStructApp.MyClass::TestStatic()
IL_0006: nop
IL_0007: call void ClassOrStructApp.MyStruct::TestStatic()
IL_000c: nop
IL_000d: newobj instance void ClassOrStructApp.MyClass::.ctor()
IL_0012: stloc.0
IL_0013: ldloc.0
IL_0014: callvirt instance void ClassOrStructApp.MyClass::Test()
IL_0019: nop
IL_001a: ldloca.s s
IL_001c: initobj ClassOrStructApp.MyStruct
IL_0022: ldloca.s s
IL_0024: call instance void ClassOrStructApp.MyStruct::Test()
IL_0029: nop
IL_002a: ret
} // end of method Program::Main
void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.name == "Character")
{
var pers = col.gameObject.GetComponent<HealthCharacter>();
if (pers != null)
{
pers.TakeDamage(attackDamage);
}
}
}