10 советов и хитростей в C# и Microsoft Visual Studio

C# великий язык. Он относительно легок в изучении и имеет более простой синтаксис чем С++ и Java. В течении 10 лет он по прежнему является сильным конкурентом. Он улучшался с каждым годом, приобретая новые возможности с каждой новой версией. C# не разочаровал сообщества разработчиков.

Но начнем.

1. Environment.NewLine

Знаете ли вы, что это свойство не зависит от платформы и позволяет выводить символы новой строки в соответствии с платформой?

Console.WriteLine("My Tips On ,{0}C#", Environment.NewLine);


2. Псевдоним пространства имен (namespace)

Знаете ли вы, что есть возможность заменить длинные имена пространств имен короткими псевдонимами? И вы сталкивались с ситуацией, когда при объявлении экземпляра класса необходимо задавать полное пространство имен, во избежание двусмысленности. Посмотрите на пример ниже, где используется библиотека, созданная с расширением .NET Framework

using System.Web.UI.WebControls;

using MyGenericLibrary.UserControls;

/* предположим, у вас есть контрол TextBox в обоих пространствах имен,
и вы должны полностью указать объект класса с определением полного пространства
имен. Чтобы избежать этого, вы можете определить псевдоним пространства имен. Сделайте
как показано ниже: */

using System.Web.UI.WebControls;
using mc = MyGenericLibrary.UserControls;
/*и используйте */
mc.TextBox textbox = new mc.TextBox();


3. Атрибут DebuggerBrowsable.

Каждый разработчик C# делает отладку в той или иной точке программы. Данный атрибут является мощным средством в контроле поведении объекта в процессе отладки. Процесс отладки включает в себя отображение объекта отладки в небольшом окне всплывающей подсказки.Это можно использовать в скрытии private или других объектов, отображение которых в окне отладки бесполезно и только мешает. Например, при отладке любого класса вы будете видеть все скрытые переменные в окне отладчика. Вы можете скрыть их используя атрибут [DebuggerBrowsable(DebuggerBrowsableState.Never)]:

public class MyClass
{
   private string _id;

   public string InternalID
   {
      get { return _id; }
      set { _id = value; }
   }
}

VISIBLE
 

[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public class MyClass
{
   private string _id;

   public string InternalID
   {
      get { return _id; }
      set { _id = value; }
   }
}

HIDDEN
4. Атрибут DebuggerDisplay

Этот атрибут позволяет отображать описание переменной. Это помогает тем, кто будет работать с вашим исходным кодом в будущем. Атрибут очень просто использовать. Пример можно увидеть в следующем коде:

public class MyClass
{
   [DebuggerDisplay("Value = {myVariable}")]
   public string myVariable = "mydisplay";
}

5. Создание виртуальной папки для проекта

Вы можете дать возможность каждому разработчику Вашей команды создать виртуальный каталог с таким же названием как у проекта. Этот трюк с Microsoft Studio IDE чрезвычайно полезен в синхронизации кода межу несколькими машинам C# разработчиков.Кликните правой кнопкой мыши на проекте и в выпадающем списке выберите “Свойства” (“Properties”). Перейдите на вкладку Web и отметьте “Использовать локальные IIS веб сервер” (“Use Local IIS Web Server”) задайте путь.

Внесите изменения и проверьте файл проекта. Всем разработчикам, кто использует данный файл проекта, будет отправлен запрос на создание директории с таким же названием как у проекта.

6. Изменение платформы приложения

Вы можете изменить платформу приложения. Вы можете выбирать из двух вариантов: 32-битной и 64 – битной разрядной среды.
Кликните правой кнопкой мыши на проекте и в выпадающем списке выберите “Свойства” (“Properties”). Перейдите на вкладку “Build”и выберите соответствующую платформу.

7. Окно определения кода

Это окно позволяет перейти к месту Определению объекта. Нажмите клавишу F12 для быстрого перехода к месту определения объекта. Попробуйте сделать это в вашем редакторе прямо сейчас и вы не будете разочарованы.
Это всего лишь “ОКНО ОПРЕДЕЛЕНИЯ КОДА”. Комбинация клавиш CTRL +W, D покажет окно определения кода.


if (e.Item.ItemType == ListItemType.Item )
{
   //Your code here.
}

Если вы установите курсор на ListItemType и нажмете комбинацию клавиш вы увидите окно как на рисунке ниже.

8. Оператор Null Coalescing

Оператор Null Coalescing позволяет коротко записать сравнение значения с null-значением. Она записывается с помощью двойного знака вопроса (??).
Например, некоторая функция myfunction() может вернуть null значение. В таких случаях вы можете использовать данный оператор для быстрой проверки на null-значение и заменой его на альтернативное значение (не null):


int myExpectedValueIfNull = 10;
int expectedValue = myfunction() ?? myExpectedValueIfNull

9. Ярлык для использования определения (Statement)

Ctrl
и “.” откроет окно с возможными вариантами использования определения. Используйте стрелки для выбора. Нажмите Enter. Вуаля! Используемое решение добавлено!



10. Нудачное слияние наборов данных DataSet

Была ли у Вас ситуация, когда вы не могли понять, почему слияние двух DataSet заканчивалась провалом? Существует выход из положения.
Конечно, вы можете использовать try-catch для обработки исключений. Но посмотрите специфический код, который определяет точную причину ошибки.


StringBuilder error Messages = new StringBuilder();
try
{
   DataSet dataSet1 = populateDataSet(1);
   DataSet dataSet2 = populateDataSet(2);
   dataset1.Merge(dataset2);
}
catch (System.Data.DataException de)
{
   foreach (DataTable myTable in dataSet1.Tables)
   {
      foreach (DataRow myRow in myTable.GetErrors())
      {
         foreach (DataColumn myColumn in myRow.GetColumnsInError())
         {
            // цикл по каждому столбцу в строке, которая вызвала ошибку во время
            // связывания и вывод этой ошибки
            //loop through each column in the row that has caused the error
            //during the bind and show it.
            error Messages .Append(string.Format("Merge failed due to : {0}", myColumn.GetColumnError(myColumn)));
         }
      }
   }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_good.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif