Archive 2008

Unit тесты и наследование

Published at December 23, 2008 ·  1 min read

При разработке unit тестов в Visual Studio часто хочется создать какой-то базовый клас для тестирования базовой лоники. Например у нас есть такой класс:

 

        [TestClass]         public class PersonTestBase         {             [TestMethod]             public virtual void GetNameTest()             {

                //…             }         }

 и его класс наследник:         [TestClass]     public class CustomerTest: PersonTestBase     {         [TestMethod]         public override void GetNameTest()         {             base.GetNameTest();         }     }

...


Oxite - блог-дижок на ASP.NET MVC

Published at December 16, 2008 ·  1 min read

В начале этого месяца на CodePlex появился новый проект - Oxite. Некоторые сразу его восприняли как аналог WordPress - но, как мне кажется, судить об этом ещё рано. Главная особенность заключается, конечно же, в том, что он написан на ASP.NET MVC Beta. Первые ощущениея при его испольщзовании - работает быстрее Blog Engine. Сразу захотелось увидеть его в действии в боевых условиях, в данный момент пока это только сайт http://visitmix.com/. К слову на Mix 09 будет официально представлен Oxite.

...


Настройка совместной работы ASP.NET MVC и IIS 6

Published at November 30, 2008 ·  1 min read

Уже немала было написано на эту тему, но в статье http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx пошли немного дальше: теперь url rewriting настроен таким образом, что нет необходимости в имени контроллера в пути прописывать расширение. Не буду утверждать что это что-то новое, но я до этого использовал пути вроде http://localhost/mvcsite/home.mvc.

...


IronPython и ASP.NET

Published at October 30, 2008 ·  1 min read

В предыдущем посте я рассказал как подружить Visual Studio и IronPython. Сегодня мы напишем первое приложение на ASP.NET на языке IronPython.

Для начала необходимо скачать ASP.NET Dynamic Language Support, который включает в себя документацию и два примера: ASP.NET MVC IronPython Sample и ASP.NET Webforms IronPython Sample. Webforms sample- это обычный web site проект с такими файлами:

 

 К сожалению, в текущей версии не поддердивается проект Web Application.

C ASP.NET MVC Sample всё на много интереснее. Т.к. Python - это динамичский язык и не поддерживает атрибутов, то код контроллеров приходится писать на C#. С model и view всё значитально проще. Можно использовать IronPython, только во view нужно указать Language=“IronPython”. В остальном создание приложение ничем не отличается от такового на C#.

...


Live ID становится провайдером для Open ID

Published at October 28, 2008 ·  1 min read

Об этом говорили, спорили, но это призошло. Тепрь не нужно выбирать между Live ID и Open ID - достаточно использовать Live ID Open ID Provider. В данный момент он находится в стадии Comunity Technology Preview (CTP) и поддерживает протокол Open ID 2.0. Пока нет точных планов выпуска финальной версии, изветсно только что она выйдет в 2009-м году.

Оригиннальне сообщение здесь.

...


Пишем Hello World на IronPython

Published at October 21, 2008 ·  2 min read

IronPython - динамический язык с поддержкой .NET. Полностью совместим с оригинальным Python, но, в тоже время, позволяет пользоваться всеми преимуществами .net framework. Проект развивается комьюнити и поддерживается Microsoft. Оффициальный блог - http://blogs.msdn.com/ironpython. Текущая стабильная версия - 1.1.2, но уже сейчас доступна вполне рабочая 2.0 Beta 5, которая включает в себя множетсво баг-фиксов и другие изменения.

Чтобы начать программировать на этом языке достаточно всего лишь скачать его дистрибутив и запустить его консоль. Только таким образом мы избавим себя от таких удобств, как:удобная IDE, подсветка кода, дебаггер и всё то, что помагает нам каждый день в порцессе разработки прилижений.

...


ASP.NET MVC Beta

Published at October 17, 2008 ·  1 min read

Вышла первая бета ASP.NET MVC Beta.

Список нововведений:

- Добавлено новое меню "Add View" в Visual Studio.
-  Появилась папка \Scripts и поддержка jQuery.
- Встроенная поддержка Model Binder для комплексных типов.
- Перестроена инфраструктура Model Binder.
- Улучшены методы UpdateModel и TryUpdateModel.
- Улучшено тестирование сценариев UpdateModel и TryUpdateModel.
- Типизирован атрибут AcceptVerbs и добавлено перечисление HttpVerbs.
- Улучшены сообщения об ошибках по умолчанию при валидации.
- Модифицированы некоторые хелпер методы. Изменено создание формы. Методы стали extension-методами класса HtmlHelper.
<li>Поддержка проектов с Silverlight 2, который, как изветсно теперь уже RTW (release to web).<br />
</li>
- [Можно скачать](http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=aspnet&ReleaseId=18459) ASP.NET MVC Futures.
- Поддержка размещения сборок в GAC
...


Доступен Open XML SDK 2.0 CTP

Published at October 15, 2008 ·  1 min read

Как-то это осбытие осталось в тени выхода финальной версии Silverlight 2.  Вчера, 14 октября, стала доступна новая версия Open XML SDK. Среди нововведений, по сравнению с первой версией стоит отметить:

- Strongly Typed Classes and Objects - теперь нам не нужно работать с "сырым" xml и появилась подсветка кода.
- Content Construction, Search, and Manipulation - поддержка LINQ со всемы вытекающими отсюда последствиями.
- Validation - к сожалению, не доступно в текущем релизе, но валидация Open Xml документов будет прекрасным дополнением к уже существующим функциям.

Скачать всё это можно тут.

...



Configuration Section Designer - дизайнер настроек

Published at October 9, 2008 ·  1 min read

Почти год назад я писал о плагине для Visual Studio, под названием Visual Local History 2005 - мини система контролей версий на локальном компьютере. Не так давно на www.codeplex.com был найден очередной интересный, а главное - полезный, проект под названием Configuration Section Designer

 

После установки плагин добавляет новый тип проекта в Visual Studio, к котором подобно class diagram можно “рисовать” диаграммы конфигурационных файлов. После чего, плагин автоматически сгенерирует класс, который будет содержать в себе конфигурационную секцию, сделанную в диаграмме, доступ к настройкам будет состоять из доступа к свойствам класса.

...


Blog Camp CEE 2008

Published at September 26, 2008 ·  1 min read

Blog Camp Central and Eastern Europe, CEE - пройдет 17-19 октября в Киеве. Одна из частей программы - конкурс блогов. Более подбробно читаем на сайте и голосуем за понравившееся вам блоги.

...


Несколько слов о ASP.NET и безопастности

Published at September 23, 2008 ·  1 min read

Навеянно постом “Asp.NET контроли і HtmlEncode”. Сейчас уже многие пользуются методами HtmlEncode/HtmlDecode и UrlEncode/UrlDecode для обработки данных, которые ввел пользователь. Но эти медоты используют базовый алгоритм, что может не подходить для частных случаев, таких как использование данных в качестве атрибутов html-тегов и других. Более спецефические методы нам предоставлены в библиотеке Microsoft Anti-Cross Site Scripting Library. Более подробно о ней и ещё преимуществах написано в документации.

Также для нахождения Sql и XSS Injection предоставлены Microsoft Source Code Analyzer for SQL Injection и XSS Detect Beta Code Analysis Tool соответственно. НЕ забываем прочитать базовые вседения о безопастности веб-приложений в целом и приложений, написанных на ASP.NET в частности.

...


Microsoft Silverlight 2 Beta 2 и Google Chrome

Published at September 16, 2008 ·  1 min read

Не так давно начал знакомиться с технологией Silverlight. Знал что он работает в браузерах IE 6.0, 7.0, FireFox 2, 3, Apple Safari под MacOS. Но сегодня случайно ошибся окном и открыл страницу в Google Chrome. Первая мысль была: сейчас посмотрю как работает приложение без установленного плагна Silverlight, но не тут то было… Chrome с радостью показал мне рабочие приложение.

 

...


Ajax и загрузка файлов на сервер

Published at September 14, 2008 ·  2 min read

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

Для решения этой задачи существует стандартный ASP.NET компонент FileUpload, который, в свою очередь, педставляет html-тэг . В простнйшем случае код для загрузки файлов будет выглядеть так: -  Default.aspx: <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“WebApplication1._Default” %> -   - -   - <html xmlns=“http://www.w3.org/1999/xhtml"> - <head runat=“server”> -     <title></title> - </head> - <body> -     <form id=“form1” runat=“server”> -     <div> -         input type=“submit” value=“Upload” /> -     </div> -     </form> - </body> - </html> -   -   - Default.aspx.cs using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using System.Web.UI; - using System.Web.UI.WebControls; - using System.IO; -   - namespace WebApplication1 - { -     public partial class _Default : System.Web.UI.Page -     { -         protected void Page_Load(object sender, EventArgs e) -         { -             if (IsPostBack && fu.FileContent != null) -             { -                 fu.PostedFile.SaveAs(path); -             } -         } -     } - } -   -   - Default.aspx:  <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“WebApplication1._Default” %> -   - -   - <html xmlns=“http://www.w3.org/1999/xhtml"> - <head runat=“server”> -     <title></title> - </head> - <body> -     <script type=“text/javascript”> -         function onFormSubmit() { -             var formUpload = document.getElementById(‘form1’); -             formUpload.target = ‘upload_target’; -             formUpload.action = ‘default.aspx’; - -         } -     </script> -     <form id=“form1” onsubmit=“onFormSubmit();"> -     <div> -         <input id=“file1” type=“file” name=“file1” /> <br /> -         <input id=“file2” type=“file” name=“file2” /> -         -         <input type=“submit” value=“Upload” /> -         -         <iframe id=“upload_target1” name=“upload_target” src=”” style=“width:0;height:0;border:0px solid #fff;"></iframe> -     </div> -     </form> - </body> - </html> -   - Default.aspx.cs: using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using System.Web.UI; - using System.Web.UI.WebControls; - using System.IO; -   - namespace WebApplication1 - { -     public partial class _Default : System.Web.UI.Page -     { -         protected void Page_Load(object sender, EventArgs e) -         { -             if (IsPostBack) -             { -                 HttpFileCollection uploads = HttpContext.Current.Request.Files; -                 for (int i = 0; i < uploads.Count; i++) -                 { -                     HttpPostedFile upload = uploads[i]; -   -                     if (upload.ContentLength == 0) -                         continue; -   -                     upload.SaveAs(path); -                 } -   -             } -         } -     } - } -   -  

...


Регистрация доменных имен с использованием национальных алфавитов

Published at September 3, 2008 ·  1 min read

Вот так, неожиданно для меня теперь пожно зарегистировать домен www.моё_имя_на_русском_языке.net. С 2-го сентября 2008-го года RU-CENTER добавил возможность регистрировать доменные имена, содержащие символы таких национальных алфавитов: латинский, греческий, кириллица, армянский, иврит, арабский, грузинский, бенгальский, ория, тамильский, каннада, тайский, тибетский, бирманский, рунический, монгольский, японские, китайские и корейские иероглифы. Стоит отметить, что каждому домену, содержащему символы национальных алфавитов, будет соответствовать домен из латинских символом. К примеру домен «xn–b1alf1j.net» представляется как «київ.net».

Так что теперь ждём новую волну перепродажи доменов и регистрируем свои, пока ещё свободно.

...


Chrome - браузер от Google

Published at September 2, 2008 ·  1 min read

Практически только что появилась возможность скачать новый браузер от компании Google - GoogleChrome. Пока делюсь первыми впечатлениями:

<li>	как всегда от Google - новый, но эт этого не менее понятный интерфейс;
</li>
- каждая вкладка - отдельный процесс в системе - неожиданное для меня, но удобное решение;
- в отличии от IE8 beta - сайты открываются в таком виде, каком их одидаем увидеть;
<li>автоматически подхватились настройки с FireFox, что сделало передох более радостным.<br />
</li>
...


ASP.NET MVC как часть .NET Framework

Published at September 2, 2008 ·  1 min read

С момента выхода ASP.NET MVC идут обсуждения: будет ли он включен в состав .net framework или нет? Если верить слухам и некоторым сообщениям в msdn blogs, то рано или поздно это случится.

Текущая его версия Preview 5, доступная на CodePlex, говорит что до релиза проект ещё не готов, хотя некоторые надеялись, что ASP.NET MVC будет частью .net 3.5 sp1. Надежы, в большей степени, не оправдались. Почему в большей? Потому что сборки System.Web.Abstractions.dll и System.Web.Routing.dll, ранее присутствующие только в ASP.NET MVC, вошли в .NET 3.5 Service Pack 1.

...


Мобильный веб

Published at August 28, 2008 ·  1 min read

C каждым днём мобильный интернет становится всё более доступным. Мобильный телефон с gprs перестал быть диковиной. Даже wap постепенно уходит в прошлое. Wap перестаёт устраивать рядовых пользователей и заставляет разработчиков учитывать особенности мобильных браузеров.

Всё больше сайты имеют свою облегчённую, мобильную версию. Но что нужно сделать чтоб и ваш сайт смог корректно отображаться на мобильном браузере?

Для начала он должен соответствовать стандарту XHTML™ 1.0, т.к. большинство браузеров на мобильных телефонах и PDA могут корректно обработать такой контент. Также консорциум w3c месяц назад обнародовал Mobile Web Best Practices 1.0, где находятся Guidelines по созданию сайтов для мобильных устройств. Многие верят в то, что вскоре это станет стандартом.

...


.NET 3.5 SP1 и первые проблемы

Published at August 22, 2008 ·  1 min read

Свершилось! Несколько дней назад вышел [8319-81da479ab0d7&displaylang=en" target="_blank">.net 3.5 service pack 1](http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-<script type=). В месте с ним мы получили ASP.NET Dynamic Data, Entity Framework,  ADO.NET Data Services и много чего другого. Подообнее можно почитать тут.

Но, разумеется, в каждой бочке мёда найдётся своя ложка дёгтя. Ей стал Ajax Control Toolkit, а именно одни из его базовых компонентов - ToolkitScriptManager. После установки .net 3.5 sp1 ToolkitScriptManager, входящий в состав Microsoft Ajax Control toolkit, перестал правильно функционировать. Разработчики компонентов достаточно быстро отреагировали  и выпустили новый релиз, который имеет совместимость с носледней версией .net framework. Так что ставим новую версию, и продолжаем использовать пусть и не лучшую, но уже ставшую достаточно популярной связку MS Ajax и Ajax Control Toolkit. Новую версию тулкита качает здесь.

...


.NET 3.5 и Web Service

Published at August 19, 2008 ·  2 min read

После переходна на новую ферсию .net framework, как и следовало ожидать, некоторый код потерял свою работоспособность. Перестали работать веб-службы. Точнее одна из них.

Серверный её код ничем не выделяется от остальных:

<font face="Courier New" size="2" color="black">[WebService(Namespace = <font color="#a31515">"myns"</font>)]<br />
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]<br />
[ScriptService]<br />
<font color="#0000ff">public</font> <font color="#0000ff">class</font> MyService : WebService<br />
{<br />
  [WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json)]<br />
  <font color="#0000ff">public</font> List<<font color="#0000ff">string</font>> GetData()<br />
  {<br />
     List<<font color="#0000ff">string</font>> result;<br />
     <font color="#008000">//вся необходимая логика</font><br />
     <font color="#0000ff">return</font> result;<br />
  }<br />
}</font><font size="1" color="gray"><br />
<br />
</font>

 Главное отличие её от других заключается в том, что обращение к ней идёт не с помощью ScriptManager и ServiceReference (в таком случае всё работает), а вызывается методом POST по url напрямую с javascript.

...


Microsoft Sql Server 2008 RTM

Published at August 7, 2008 ·  1 min read

Дождались! Этой ночь Microsoft выпустили RTM версию SQL Server 2008. Официальный источник: здесь. Доступны все версии, включая новую Web Edition  Compact Edition 3.5 SP. Подробное описание редакция - на MSDN.

P.S. Надеюсь мой ключик для Developer Edition будет работать:).

...


ASP.NET и правильный выбор имен классов

Published at June 27, 2008 ·  1 min read

На днях в очередной раз столкнулся с проблемой:  после разворачивания приложения на сервере на нескольких страницах появляется 500-я ошибка. Процесс развертывания приложения проходит следующим образом:

- разработка и отладка приложения на машине разработчика
- cборка проекта с помощью aspnet_compiler
- коирование на тестовый сервер

На этих шагах все работает отлично, а дальше получаем стандартную желтую страницу с ошибкой о невозможности найти нужный класс. В данном случае проблема была со страницей восстановления пароля, на которой находился только компонент PasswordRecovery. Т.к. проект был собрал в release-версии, отадка была сильно затруднена.  Далее выяснилось, что класс, реализующий эту страницу тоже назывался PasswordRecovery. Таким образом, компиляция происходит успешно, но на этапе выполнения происходит исключение. Проблема состоит в том, что в одной области видимости появляется два класса с одним именем, и .net не знает какой класс нужно использовать.

...


Win the Web - 24 часа ада!

Published at April 24, 2008 ·  1 min read

Осталоcь всего 7 дня до конца регистрации на конкурс Win the Web. Конкурс web-разработчиков на платформе Microsoft. Особенность его состоит в том, что он будет проходить непрерывно 24 часа! Проводится в два этапа: после локального этапа две команды (одна студенческая и вторая команда профессиональных разработчиков) едут на финал. Поко что от Украины зарегистрировано лишь две команды. Для участия нужно зарегистрироваться на сайте и до первого мая загрузить mini application. Подробнее о правилах и об участии написано на их сайте.

...


MS Ajax и сторонние скрипты

Published at April 5, 2008 ·  2 min read

Интеграция различных скриптов на страницу, где используется MS Ajax - задача нередкая, но единого решения для неё не существует. Я поделюсь с вами некоторыми методами, которые помогут интегрировать срипт в вашу страницу.

<li>

Никогда не подключайте скрипты с помощью тега <font size="2" color="#0000ff"><font size="2" color="#0000ff"><</font></font><font size="2" color="#a31515"><font size="2" color="#a31515">script</font></font><font size="2"> </font><font size="2" color="#ff0000"><font size="2" color="#ff0000">src</font></font><font size="2" color="#0000ff"><font size="2" color="#0000ff">="..."></</font></font><font size="2" color="#a31515"><font size="2" color="#a31515">script</font></font><font size="2" color="#0000ff"><font size="2" color="#0000ff">></font></font>. Вместо этого следует использовать копмонени ScriptManager либо ScriptManagerProxy. 

</li>
<li>

Что бы не говорили разработчики MS Ajax и AjaxControlToolkit, в конец каждого файла со скриптом следует добавить такой код:<br />
<font size="2" color="#0000ff"><font size="2" color="#0000ff">if</font></font><font size="2"> (</font><font size="2" color="#0000ff"><font size="2" color="#0000ff">typeof</font></font><font size="2">(Sys) !== </font><font size="2" color="#a31515"><font size="2" color="#a31515">'undefined'</font></font><font size="2">) Sys.Application.notifyScriptLoaded();<br />
</font>Данный код указывает на то, что скрипт полностью загрущился и можно его выполнять. 

</li>
<li>

Если скрипт необходимо подгружать только в определённых ситуациях (например, добавление нового компонента на форму), то его следует регистрировать с помощью статических методов класса ScriptManager вида RegisterClientScriptXXX(). 

</li>
<li>

Для выполнения скрипта после загрузки на страницу есть несколько методов: <br />
1) использовать клиентское событие EndRequest;<br />
2) создать функцию с именем pageLoad() - метод аналогичен первому;<br />
3) если скрипт необходимо зарегистрировать с помощью серверного кода, то используйте метод <font size="2" color="#2b91af"><font size="2" color="#2b91af">ScriptManager</font></font><font size="2">.RegisterStartupScript().</font> 

</li>

Эти методы не являются панацеей от всех бед, но помогают экономить часть времени, необходимого на интеграцию скриптов. Иногда хватает только этого, иногда приходится часами отлаживать чужой javascript, но знать о них, как я думаю, должен каждый разработчик, использующий MS Ajax.

...


От перемены мест слогаемых сумма меняется!

Published at March 31, 2008 ·  1 min read

Законы математики, как показывает практика, действуют не всегда. В сфере программирования вообще и интернет поиска в частности, математика используется достаточно часто. Но интернет-поисковики пытаясь реализововать “человекообразный” алгоритм поиска в web’e иногда показывают забавные результаты: для примера вводим в поиске фразу “javascript+dhtml” (без кавычек), http://search.live.com/results.aspx?q=javascript%2Bdhtml&go=Search&mkt=en-us&scope=&FORM=LIVSOP.

 Т.к. поисковый движок считает что первая враза имеет больший вес, то при вводе “dhtml+javascript”, http://search.live.com/results.aspx?q=dhtml%2Bjavascript&go=Search&mkt=en-us&scope=&FORM=LIVSOP у нас получается другой результат.

 

...


Новости блога

Published at March 25, 2008 ·  1 min read

Блог переехал на новое место. Теперь он находится по адресу: http://blog.e0ne.info/. В данный момент блог работает в тестовом режиме, фиксятся баги.

...



Миграция unit tests на Visual Studio 2008

Published at March 3, 2008 ·  1 min read

При миграции unit-тестов с Visual Studio 2005 на 2008 (.net 2.0) обнаружил интересный баг. Студия радостно отрапортовала об успешной конвертиции проектов, но при запустке тесты проваливались с такой ошибкой:

Method SampleTest.ClassDBTest.MyClassInitialize has wrong signature. Parameter 1 should be of type Microsoft.VisualStudio.TestTools.UnitTesting.TestContext. 
...


Microsoft vs. Google: Битва титанов

Published at February 27, 2008 ·  1 min read

Этим постом я начинаю серию из 4 рассказов про on-line сервисы двух одних из наиболее влиятельных игроков на рынке програмного обеспечения. Часть 1. Введение. Часть 2. Краткое описание сервисов Google. Часть 3. Краткое описание сервисов Microsoft. Часть 4. Подводим итоги.

Часть 1. Введение.

...


Hosting Roadshow: Windows Server 2008 and IIS 7.0

Published at February 26, 2008 ·  1 min read

С большим опозданием, но всё же напишу про своих впечатлениях о мероприятии, которое проходило 14 февраля в Киеве.

Конференция проходила в конференц-зале гостиницы Radisson SAS Hotel . Уровень гостиницы можно оценить тем фактом, что в тот же день в соседнем зале проходило мероприятие, если не ошибаюсь, ирландского посольства. Порадовал не совсем обычный подход к докладам: каждому учаснику представлялись рабочие места с PC (некоторым достались в качестве рабочих стинцих ноутбуки), за которыми мы и провели большую часть времени, т.к. короткие лекции сопровождались лабораторными работами.

...


WebApp и Visual Studio 2008

Published at January 20, 2008 ·  1 min read

В новой студии, по умолчанию, при создании веб-приложения на master page добавляется ещё один ContentPlaceHolder:

<br />
<head runat="server"><br />
<asp:ContentPlaceHolder ID="head" runat="server"><br />
</asp:ContentPlaceHolder><br />
</head><br />
<br />
<title> Untitled Page </title> <title>My page</title>


<br />
<li>Явно присвоить в коде свойству Title страницы название:<br />
Title = “My page”;</li><br />
<li>Указать атрибут страице:<br />
<%@ Page Language="C#" MasterPageFile="~/MyMaster.Master" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Inherits="MySite.Pages" Title="My Page" %></li><br />
<li>Установить тег title:<br />
<blockquote>
	<br />
	<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"><br />
	<title>My Page
</blockquote>
</li>
...


Приведение типов в C# 2.0

Published at January 17, 2008 ·  1 min read

Приведение типов на практике встречается довольно часто. Из-за того, что в языке C# существует два оператора, позволяющих решить эту задачу, время от времени возникают InvalidCastException. Остановимся на этих операторах подробнее.

  1. () оператор. На уровне IL-кода генерирует вызов функции castclass Выдержка из msdn: A cast explicitly invokes the conversion operator from one type to another; the cast fails if no such conversion operator is defined. Оператор можно использовать только в том случае, если это предусмотрел разработчик. Плюсы: простота в использовании, читабельность кода. Работает как с value, так и с reference типами. Минусы: можно использовать не со всеми типами данных; источник InvalidCastException в случае неудачного вызова.
<p>
<br />
int? i1 = 2;<br />
// вычисление значения i2<br />
int i2 = (int)i1; // к этому моменту возможна ситуация, когда i1 будет равным null.
</p>
<br />
public void MyMethod(object intObj)<br />
{<br />
if (intObj != null)<br />
{<br />
int intO = (int) intObj;<br />
// ...<br />
}<br />
}<br />
string s = someObject as string;<br />
if (s != null)<br />
{<br />
// someObject is a string.<br />
}
...


Tags

.net .net framework .net framework 3.5 agile ajax ajax control toolkit ampq ansible apache asp.net asp.net mvc automation axum babel bash benchmark blog blog engine bootstrap buildout c# cache centos chrome ci cinder ckan cli cloud code review codeplex community config debugger deface dependencies development environment devices devstack devtime disks django dlr dns docker dockerimage dos easy_install elmah encoding environment variables error event events everything-as-a-code exception exceptions fabrik firefox flask foreach forms fstab gae gcc gerrit git github go google google app engine grep hack hacked hardware headless horizon hound html hugo iaas ienumerable iis internet iptables iron python ironic iscsi java script javascript jenkins jquery js jsx k8s kharkivpy kiss kombu kubernetes kvm kyiv lettuce libvirt linux lio loci logging loopback losetup lvm mac os macos mercurial microsoft microsoft sync framework mobile mono ms office msbuild networking news nginx npm npx offtopic oop open source open xml opensource openstack openvswitch os p'n'p packages paraller development patterns & practices performance php pika pip plugins podcast popup postgresql profiler project protocols proxy pycamp pycharm pycon pykyiv pylint pypi python python 3 qcow quantum qumy rabbitmq rar react reactjs refactoring rfc rhel search engine security selenium server shell silverlight socket software engineering source control sourcegear vault sources sql sql server sql server express sqlalchemy ssh static site sublimetext svg tests tgt tipfy todo tornado typescript uapycon ui uneta unit tests upgrades usability vim virtualenv visual studio vitrage vm vue.js vuejs web development web server web service web_root webpack webroot windows windows live word press x32 x64 xcode xml xss xvfb интернет-магазин книги

Recent posts

Go 1.18: new features

Всё будет Kubernetes

2022 Relaunch

Everyday Blogging

I don't want this CI


Archives

2022 (3)
2019 (73)
2018 (2)
2017 (3)
2016 (2)
2015 (3)
2014 (5)
2013 (17)
2012 (22)
2011 (36)
2010 (25)
2009 (35)
2008 (32)
2007 (2)