Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

отсутствие пользовательских value-типов (структур)удар по производительности (особенно для игр)
C# обеспечивает чудесную кроссплатформенность.
#if .. #endif его даже в JavaScript можно транслировать, при этом имея рабочую .NET версию (и это активно используется в нашем проекте).dict[key].Foo = 42;много языковых плюшек, отсутсвующих в JAVA (лямбды, замыкания, события, свойства и т.п.)
с событиями очень легко и удобно работать
Свойства показывают уникальное для класса значение
прибиндить её (переменную) к интерфейсу
без замыканий, мы уходим от ооп к функциональщине,

уникальное для класса значение.Не так выразился. Сам виноват, но все ж у свойств есть преимущество перед переменными класса в том что когда устанавливается значение можно завесить на него вызов события какого нибудь («Property Changed» например)
public DomainDataSource DS { get { return _ds; }
set
{
if (_ds != null)
_ds.DataContextChanged -= new DependencyPropertyChangedEventHandler(ds_DataContextChanged);
_ds = value;
fbrEdit.ds = value;
if (_ds != null)
_ds.DataContextChanged += new DependencyPropertyChangedEventHandler(ds_DataContextChanged);
}
}Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы.
Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательное изменение состояний (в значении, подобном таковому в теории автоматов).
) ds.DataContextChanged += new DependencyPropertyChangedEventHandler(ds_DataContextChanged);
2)
как вы реализуете блокировку/видимость компонентов отображения от внутренного состояния класса?
4)
public int getSomeInt()
{
if (!canIGetThisInt)
throw new InvalidAccessException();
else
return someInt;
}
Value="{Binding Path=supplier,Mode=OneWay}"
пустота вместо значения.
ds.DataContextChanged += new DependencyPropertyChangedEventHandler(ds_DataContextChanged);
ds.DataContextChanged += ds_DataContextChanged; protected override void OnCreate(Bundle savedInstance)
{
base.OnCreate(savedInstance);
SetContentView(R.Layouts.MainLayout);
var text = (TextView) FindViewById(R.Ids.theLabel);
StringBuilder sb = new StringBuilder();
text.Text =
sb.Append("H")
.Append("e")
.Append("l")
.Append("l")
.Append("o")
.Append(",")
.Append(" ")
.Append("H")
.Append("a")
.Append("b")
.Append("r")
.ToString();
var animation = AnimationUtils.LoadAnimation(this, R.Anims.Animation);
text.SetAnimation(animation);
animation.Start();
}

dot42 — компилятор C# для Dalvik Runtime