Попытка обобщить моменты сходства и расхождений С++ и C#. Тем самым поднять уровень знаний по языкам, себе, ну и всем желающим.
Буду стараться задавать вопросы в тех моментах, которые легче спросить здесь, нежели читать литературу или искать в инете, дабы окончательно не поднадоесть Вам)
1) -> это тоже самое что в шарпах .? т.е. Mouse->X что и Mouse.X?
2) Uielement*, *Uielement, что означают звездочки?
Спасибо!)
1) Грубо говоря да, но не совсем, в C# помимо "." есть еще этот самый оператор "->" и я его даже в UrhoSharp юзал (для интеропа)
2) Опять же это есть в обоих языках, лучше наверное сперва основы С/С++ почитать про указатели/разыменование/ссылки и.т.п Изучить оба языка будет давольно сложно одновременно :)
Ну мое мнение, что в C++ и C# больше различий, чем сходств, хотя на первый взгляд они похожи. Дьявол как говорится скрывается в деталях.
В DynamicGeometry, как раз его встретил и завис над ним. Возможно ли этот же блок написать без unsafe?
unsafe
{ //TODO: avoid unsafe
Vector3* dest = (Vector3*)IntPtr.Add(vertexRawData, j * (int)vertexSize);
dest->X = src.X * (1 + ampl * (float)Math.Sin(phase));
}
На подобие:
Vector3 dest =new Vector3(?????);
dest.X = src.X * (1.0f + ampl * (float)Math.Sin(phase));
Прочитал три книги по с# и нигде не видел выражения ->
Звездочки успешно игнорировал, думая что вряд ли они мне понадобятся))
Zamir, это всё интероп специфик :) в нормальных приложения ты такого никогда не увидишь.
Тут у тебя есть указатель на структурку (на самом деле даже класс) из плюсов. и по этому указателю надо изменить поле.
Недавно вот такой код в C# написал:
Matrix4 leftViewMatrixUrho = *(Matrix4*) (void*) &leftViewMatrixDx;
интероп, для меня, в любых языках где имел дело, это мост из сухих веток, где не знаешь когда провалишься, хотя иногда дает пробежаться без проблем)
Тебе надо не программы писать, а поэмы ))
Zamir
> 1) -> это тоже самое что в шарпах .? т.е. Mouse->X что и Mouse.X?
> 2) Uielement*, *Uielement, что означают звездочки?
1)нет, не то же. В шарпе везде доступ через точку. В плюсах доступ к елементу через ссылочный тип стречлка, к статик "::" или точку.
2)первое обявление екземпляра ссылочного типа, второе - разыменование указателя, тоесть приведение в обычной вид
Сперва я очень сильно использовал референсы, но потом перестал в большинстве случаев, так как это повышает производительность.
Zamir
> по ходу везде его пихать нужно будет...
да вроде не везде.
Я вот всегда указатели и ссылки путаю, точнее их определение. Но мне плюсы нравятся тем, что памятью там самому надо управлять.
> Я вот всегда указатели и ссылки путаю, точнее их определение. Но мне плюсы нравятся тем, что памятью там самому надо управлять.
Ну да, фанаты c++ любят его за самостоятельно управление памятью и используют умные указатели чтобы вручную память не освобождать))
1vanK
Я не использую их, только вручную, только хардкор =)
Серьезно? ) А сколько delete в любой твоей демке на движке Urho? )
Тема в архиве.