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
}
}
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);
}
}
}
Какие движки/фрейворки я буду использовать в дальнейшем?А вот это вопрос к вам, а не к нам :)
// получаем строку с элементами
string Str1 = listBox1.SelectedItem.ToString();
// разделяем строку в массив строк по символу "пробел"
var strings = Str1.Split(' ');
// Преобразуем все строки в числа
var items = strings.Select(double.Parse);
// Находим максимальный элемент
var max = items.Max();
// Ищем индекс максимального элемента
var maxIndex = Array.IndexOf(items, max);
// Можно сократить запись:
string Str = listBox1.SelectedItem.ToString();
var items = Str.Split(' ').Select(double.Parse).ToArray();
var maxIndex = Array.IndexOf(items, items.Max());
но как мне обратиться из любого места программы к данным?
var configs = DbConfig.GetDbConf();
Console.WriteLine("{0} {1}", c[0].Server, c[0].Port);
public static Dictionary<string, DbConf> GetDbConf()
{
try
{
var configs = new Dictionary<string, DbConf>();
// ...
foreach (XmlNode n in xml.SelectNodes(Properties.Settings.Default.setting_node))
{
string server = n.SelectSingleNode("server").InnerText;
configs.Add(server, new DbConf
{
Server = server,
Port = n.SelectSingleNode("port").InnerText,
User = n.SelectSingleNode("user_id").InnerText,
Pass = n.SelectSingleNode("password").InnerText,
Db = n.SelectSingleNode("database").InnerText
});
};
return list;
}
catch (Exception msg)
{
logger.Debug(msg);
return null;
}
}
var configs = DbConfig.GetDbConf();
var serverName = "localhost";
var config = configs[serverName];
Console.WriteLine("{0} {1}", config.Server, config.Port);
public struct MyBool
{
private byte _val;
public byte Value
{
get { return _val; }
set { _val = (byte)(value == 0 ? 0 : 1); }
}
public MyBool(int a)
{
_val = (byte)(a == 0 ? 0 : 1);
}
public override string ToString()
{
return _val == 0 ? "0" : "1";
}
public override int GetHashCode()
{
return _val;
}
public override bool Equals(object obj)
{
return _val == ((MyBool)obj).Value;
}
public static implicit operator MyBool(int a)
{
return new MyBool(a);
}
public static implicit operator int(MyBool a)
{
return a._val;
}
}
MyBool[] arr1 = {1, 0, 1, 1, 0, 0, 0, 1};
MyBool[] arr2 = {1, 0, 2, 3, 0, 0, 0, -5};
// автоматически преобразуется в {1, 0, 1, 1, 0, 0, 0, 1}
// во всех си-подобных языках не-ноль - это истина