Как можно определить прототип свойства в классе - C#
Формулировка задачи:
Здравствуйте, у меня есть несколько вопросов насчет строения классов в C#:
1) Могу ли я как в С++ написать в классе в одном файле только прототип функции, а саму функцию расписать уже в другом файле
2) Как можно определить прототип свойства в классе
Заранее спасибо!
Решение задачи: «Как можно определить прототип свойства в классе»
textual
Листинг программы
using System;
using System.Windows.Forms;
using Snake.GameSource;
// ReSharper disable InconsistentNaming
namespace Snake.Forms
{
public partial class MainForm : Form
{
private int _level = 1;
private bool _isGameOver;
private string _playername = "Unknown";
public MainForm()
{
InitializeComponent();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
exit.PerformClick();
else if (e.KeyCode == Keys.P)
PauseItem.PerformClick();
else
Game.SetDirection(e.KeyCode);
}
private void Form1_Load(object sender, EventArgs e)
{
NewGame();
Height = picturebox.Bottom + 56;
if (MessageBox.Show("Для выбора нового имени нажмите Ок. Для игры под стандартным именем нажмите отмена", "", MessageBoxButtons.OKCancel) == DialogResult.OK)
setPlayerNameToolStripMenuItem.PerformClick();
Game.GameOverEventHandler += OnGameOverEventHandler;
Game.GameStepEventHandler += RefreshForm;
NewGame(); //Двойная инициализация неспроста (иначе крашится на попытке открыть AskForm)
MaximumSize = MinimumSize = Size;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Game.SaveRecords();
}
private void OnGameOverEventHandler(object sender, EventArgs e)
{
_isGameOver = true;
if (MessageBox.Show("Game Over.", "Again?", MessageBoxButtons.YesNo) == DialogResult.Yes)
NewGame();
}
private void RefreshForm(object sender, Game.GameEventArgs e)
{
label1.Text = e.Score;
picturebox.Image = e.Map;
}
private void NewGame()
{
_isGameOver = false;
pauseLabel.Visible = false;
Game.New(picturebox.Size, _level, zoomToolStripMenuItem.Checked,_playername);
}
#region menu
private void PauseItem_Click_1(object sender, EventArgs e)
{
if (_isGameOver) return;
pauseLabel.Visible = !pauseLabel.Visible;
Game.PauseUnapuse();
}
private void New_Click(object sender, EventArgs e)
{
NewGame();
}
private void exit_Click(object sender, EventArgs e)
{
if (!pauseLabel.Visible)
PauseItem.PerformClick();
if (MessageBox.Show("Вы уверены, что хотите выйти", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
Application.Exit();
}
private void zoomToolStripMenuItem_Click(object sender, EventArgs e)
{
zoomToolStripMenuItem.Checked = !zoomToolStripMenuItem.Checked;
NewGame();
}
#region levels
private void UncheckLevels()
{
level1SubItem.Checked = level2SubItem.Checked = level3SubItem.Checked = false;
}
private void ChangeLevel(ToolStripMenuItem checkBox)
{
UncheckLevels();
checkBox.Checked = true;
_level = Convert.ToInt32(checkBox.Tag);
NewGame();
}
private void level1SubItem_Click(object sender, EventArgs e)
{
ChangeLevel(level1SubItem);
}
private void level2SubItem_Click(object sender, EventArgs e)
{
ChangeLevel(level2SubItem);
}
private void level3SubItem_Click(object sender, EventArgs e)
{
ChangeLevel(level3SubItem);
}
private void level4SubItem_Click(object sender, EventArgs e)
{
ChangeLevel(level4SubItem);
}
#endregion
private void recordsToolStripMenuItem_Click(object sender, EventArgs e)
{
if (!_isGameOver) PauseItem.PerformClick();
new RecordsForm(Game.GetRecords(), Game.ColNames).ShowDialog();
}
#endregion
private void setPlayerNameToolStripMenuItem_Click(object sender, EventArgs e)
{
PauseItem.PerformClick();
new AskForm(_playername, SetPlayerName).ShowDialog();
}
private void SetPlayerName(string playername)
{
_playername = playername;
}
}
}