Я начал писать веб-приложения ASP.NET после некоторой работы с WinForms. После нескольких ошибок проб и ошибок я, наконец, осознал, насколько они различны. Хотя я знаю много продвинутых вещей о C #, я никогда не изучал тривиальные вещи, которые мне следует прежде, чем перейти к более сложным вещам, поэтому я спрашиваю здесь, потому что некоторые вопросы могут Не отвечайте через учебники, а скорее опыт разработчика, поэтому я начну:
В GDI + при работе с графикой, как правильно это сделать?
Bitmap bitmap;
Graphics g;
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(200,200);
Graphics g = Graphics.FromImage(bitmap);
}
public void SomeMethod()
{
g.DrawRectangle(somePen,someRectangle);
}
public void SomeOtherMethod()
{
g.DrawRectangle(someOtherPen,someOtherRectangle);
}
Пример:
Bitmap bitmap;
Graphics g;
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(200,200);
Graphics g = Graphics.FromImage(bitmap);
}
public void SomeMethod()
{
g.DrawRectangle(somePen,someRectangle);
}
public void SomeOtherMethod()
{
g = Graphics.FromImage(bitmap);
g.DrawRectangle(someOtherPen,someOtherRectangle);
}
Пример:
Bitmap bitmap;
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(200,200);
}
public void SomeMethod()
{
Graphics g = Graphics.FromImage(bitmap);
g.DrawRectangle(somePen,someRectangle);
//Dispose pens,graphics..
}
public void SomeOtherMethod()
{
Graphics g1 = Graphics.FromImage(bitmap);
g1.DrawRectangle(someOtherPen,someOtherRectangle);
//Dispose pens,graphics..
}
О статических методах:
У меня есть несколько методов, которые не вписываются ни в один экземпляр класса, например, некоторые методы SQL, которые мне нужны в разных частях приложения:
- Если я создам новый экземпляр класса, поместите в него все. И когда я
нужен один из них, создайте новый экземпляр и вызовите метод, который мне нужен.
- Должен ли я создать новый статический класс и просто вызвать тот, который мне нужен
без создания экземпляра.
Я понял, как статические переменные являются глобальными, и это означает, что если один пользователь изменит их, это значение будет иметь другой пользователь.
Static Int ID = 0;
UserA triggers some Sql method to fetch his ID into variable ID.
UserB comes to site and the ID value is UserA ID
Переменные, определенные локально в статическом методе, разделяют это поведение?
Есть ли такая опасность при использовании статических методов?
О нуле:
Действительно ли необходимо проверить, является ли объект нулевым, если вы убедитесь, что методы, которые вы используете для этой переменной типа, допускающей нулевое значение, не возвращают нулевое значение:
List<string> list = new List<string>();
//List can only become null if we call some method that returns null or if we do
list = null;
Об обработке исключений:
Несколько раз я читал что-то вроде «Не перехватывать исключения, с которыми вы не можете справиться», что это значит?
Почему использование метода try / catch «просто чтобы убедиться, что приложение не зависает» внутри метода не так, как производительность?