В случае 1, если вы использовали метод DoIt () унаследованного класса, в то время как тип объявлен как базовый класс, вы увидите действие базового класса.
/* Results
Class1
Base1
Class2
Class2
*/
public abstract class Base1
{
public void DoIt() { Console.WriteLine("Base1"); }
}
public class Class1 : Base1
{
public new void DoIt() { Console.WriteLine("Class1"); }
}
public abstract class Base2
{
public virtual void DoIt() { Console.WriteLine("Base2"); }
}
public class Class2 : Base2
{
public override void DoIt() { Console.WriteLine("Class2"); }
}
static void Main(string[] args)
{
var c1 = new Class1();
c1.DoIt();
((Base1)c1).DoIt();
var c2 = new Class2();
c2.DoIt();
((Base2)c2).DoIt();
Console.Read();
}
window.location.hash
существует с тех пор, как JavaScript появился в Netscape Navigator 2 в 1995 году. Впервые он был поддержан Microsoft в Internet Explorer 3 в 1996 году. Я думаю, вы можете быть достаточно уверены, что каждый браузер с поддержкой JS поддерживает его.
При быстром взгляде на источник, создается впечатление, что ReallySimpleHistory довольно широко использует это свойство, так что вы вполне можете его сломать. Возможно, вы захотите использовать вместо этого его метод add(newLocation)
(который работает путем установки window.location.hash
).
Старая нить, я знаю, но window.location.hash
также ограничена по размеру. Если вы передаете большие объемы данных и хотите сохранить состояние в хэше, у вас могут возникнуть некоторые проблемы.
IE выдаст вам ошибку: SCRIPT5 - Access denied.
, если вы попытаетесь назначить хеш, превышающий лимит, что очень полезно.
Просто пища для размышлений.
Настройка window.location.hash
отлично работает в IE6 & amp; IE7.
В некоторых случаях чтение window.location.hash
под IE6 сразу после набора вернет старое значение, но браузер успешно установил хэш. Пример:
alert(window.location.hash);
window.location.hash = '#newHash';
/* Sometimes, it will return the old value,
I haven't figured out why it does that, and
it's rather rare. */
alert(window.location.hash);
Если вы просто используете его для установки, вы не должны сталкиваться с какими-либо проблемами.
Получить:
var hash = location.hash.slice(1);
Установить:
location.hash = '#' + 'string';
Все «современные» (также известные как A-Graded) браузеры позволяют устанавливать хэш и при этом не перезагружают страницу. Те, которые перезагружают страницу , являются одними из старых, например Safari 2.0.4 и Opera 8.5x .
См. мой пост в Usenet на comp.lang.javascript
, где я объясняю его немного более подробно.
Также обратите внимание, что HTML5 наконец указывает, что установщик хеша должен изменять фактический хеш, но не перезагружает страницу .