Я где-то читал, что наличие публичных свойств предпочтительнее наличия публичных членов в классе.
-
Это только из-за абстарации и модульности? Есть ли какие-либо другие причины превышения?
-
Доступ к свойствам включается в вызовы функций компилятором. Что касается свойств без резервного хранилища (например,
public string UserName { get; set; }
), какова будет накладная производительность по сравнению с прямым доступом к членству? (Я знаю, что это обычно не имеет значения, но в некоторых моих кодах свойства доступны миллионы раз.)
Edit1: Я проверил некоторый тестовый код над целыми членами и свойствами, а публичные члены были примерно в 3-4 раза быстрее, чем свойства. (~ 57 мс. Против ~ 206 мс. В Debug и 57 против 97 в Release было наиболее распространенным значением запуска). Для 10 миллионов чтений и записей оба достаточно малы, чтобы не оправдывать изменение чего-либо.
код:
class TestTime1
{
public TestTime1() { }
public int id=0;
}
class TestTime2
{
public TestTime2() { }
[DefaultValue(0)]
public int ID { get; set; }
}
class Program
{
static void Main(string[] args)
{
try
{
TestTime1 time1 = new TestTime1();
TestTime2 time2 = new TestTime2();
Stopwatch watch1 = new Stopwatch();
Stopwatch watch2 = new Stopwatch();
watch2.Start();
for (int i = 0; i < 10000000; i++)
{
time2.ID = i;
i = time2.ID;
}
watch2.Stop();
watch1.Start();
for (int i = 0; i < 10000000; i++)
{
time1.id = i;
i = time1.id;
}
watch1.Stop();
Console.WriteLine("Time for 1 and 2 : {0},{1}",watch1.ElapsedMilliseconds,watch2.ElapsedMilliseconds);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.In.ReadLine();
}
}