#c# #.net #xna
#c# #.net #xna
Вопрос:
Фрагмент из учебного каталога Mricrosoft XNA:
/// <summary>
/// Draws the control, using SpriteBatch and SpriteFont.
/// </summary>
protected override void Draw()
{
const string message = "Hello, World!n"
"n"
"I'm an XNA Framework GraphicsDevice,n"
"running inside a WinForms application.n"
"n"
"This text is drawn using SpriteBatch,n"
"with a SpriteFont that was loadedn"
"through the ContentManager.n"
"n"
"The pane to my right contains an"
"spinning 3D triangle.";
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.DrawString(font, message, new Vector2(23, 23), Color.White);
spriteBatch.End();
}
Draw вызывается 60 раз в секунду. Есть ли какие-либо накладные расходы на производительность при назначении сообщения внутри чертежа? Это то же самое, как если бы я переместил ее в статический вспомогательный класс? Насколько я помню, выражение стоимости вычисляется компилятором C #. Что здесь изменить модификатор const?
Ответ №1:
Значение const вычисляется только один раз. Вы ничего не получите, переместив ее в статическую переменную.
Комментарии:
1. это то же самое для const string message и string message?
2. строковое сообщение выделит локальную переменную стека, инициализированную для указания на строковую константу (выражение справа в любом случае является строковой константой). Накладные расходы немного выше, чем у const string , но также const доступен только для чтения, тогда как локальная строка — нет, поэтому логически лучше использовать const для всех констант .
Ответ №2:
Нет, все это оптимизировано для вас.