e0ne's comments

A Web Developer's Blog!

WebApp и Visual Studio 2008

clock January 20, 2008 04:05 by author e0ne

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


<head runat="server">
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>


Таким образом на любой странице можно легко добавить теги title, meta, link.
Также, по умолчанию, у страницы задан атрибут Title="Untitled Page", из-за чего при использовании <title>My page</title> заголовок страницы не меняется, а исходных html-код получается таким:

<title> Untitled Page </title> <title>My page</title>

Приоритет, у способов установки названия странице, оказался таким (от большего к меньшему):

  • Явно присвоить в коде свойству Title страницы название:
    Title = “My page”;

  • Указать атрибут страице:
    <%@ Page Language="C#" MasterPageFile="~/MyMaster.Master" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Inherits="MySite.Pages" Title="My Page" %>

  • Установить тег title:

    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <title>My Page

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


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

clock January 17, 2008 03:48 by author e0ne

Приведение типов на практике встречается довольно часто. Из-за того, что в языке 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 в случае неудачного вызова.


int? i1 = 2;
// вычисление значения i2
int i2 = (int)i1; // к этому моменту возможна ситуация, когда i1 будет равным null.


Еще один не менее распространённый пример:

public void MyMethod(object intObj)
{
if (intObj != null)
{
int intO = (int) intObj;
// ...
}
}

Такой код, как правило, используется когда порграммист уверен в том, что прийдёт нужный ему тип. Но, в случае использование сторонних библиотек или чужого кода вероятность такого поведения достаточно низкая.
2. Оператор as. На уровне IL-кода генерирует вызов функции isinst, в случае успешного выполнения которой происходит приведение типа. В противном случае – объекту присваивается null. Выдержка из msdn: The as operator is like a cast operation. However, if the conversion is not possible, as returns null instead of raising an exception.
Оператор работает со всеми reference-типами и выдаёт ошибку при компиляции в случае приминения к value-типу.
Плюсы: Работает с большинством типов данных. В случае неккоректного вызова не генерирет исключения. Не зависит от реализации класса.
Минусы: Не работает с vlue-типами. После вызова оператора желательна проверка на null:
string s = someObject as string;
if (s != null)
{
// someObject is a string.
}

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Search

Calendar

<<  January 2009  >>
SuMoTuWeThFrSa
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

Archive

Tags

 

 

Участник планеты Developers.org.ua

LinkedIn

Valid XHTML 1.0 Transitional

Categories


Blogroll

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2009

Sign in