В языке / структуре-агностическом образе речи преобразование из одного типа или класса в другое известно как литье. Это верно и для .NET, так как ваши первые четыре строки показывают:
object x;
int y;
x = 4;
y = ( int )x;
Языки C и C (например, C #) используют синтаксис (newtype)somevar
для кастинга. В VB.NET, например, для этого существуют явные встроенные функции. Последняя строка будет записана как:
y = CInt(x)
Или для более сложных типов:
y = CType(x, newtype)
Где «C» явно не подходит для «cast».
Однако .NET также имеет функцию Convert()
. Это не встроенная функция языка (в отличие от вышеприведенных двух), а скорее одна из фреймворков. Это становится яснее, когда вы используете язык, который не обязательно используется вместе с .NET: у них все еще есть свои собственные способы кастинга, но это .NET добавляет Convert()
.
Как говорит Мэтт , разница в поведении заключается в том, что Convert()
более явственно. Вместо того, чтобы просто сообщать компилятору относиться к y
как целочисленный эквивалент x
, вы специально говорите ему об изменении x
таким образом, который подходит для целочисленного класса, , затем присвойте результат y
.
В вашем конкретном случае кастинг делает то, что называется «unboxing», тогда как Convert()
фактически получит целочисленное значение. Результат будет таким же, но есть тонкие отличия лучше , объясненные Keith .
Вместо border-top
попробуйте использовать псевдоэлемент :after
, чтобы воссоздать нужный эффект.
.box {
width: 200px;
height: 100px;
border: 1px solid #ddd;
position: relative;
}
.box:after {
position: absolute;
content: "";
width: 100%;
height: 5px;
top: -5px;
background: dodgerblue;
padding: 1px;
left: -1px;
}
<div class="box"></div>
Выбор 2:
Использовать linear-gradient()
.
.box {
width: 200px;
height: 100px;
border: 1px solid #ddd;
background: -webkit-linear-gradient(top, dodgerblue 5%, #fff 5%);
background: -moz-linear-gradient(top, dodgerblue 5%, #fff 5%);
background: -o-linear-gradient(top, dodgerblue 5%, #fff 5%);
background: -ms-linear-gradient(top, dodgerblue 5%, #fff 5%);
background: linear-gradient(top, dodgerblue 5%, #fff 5%);
}
<div class="box"></div>
Попробуйте это:
.box {
outline: 2px solid #ddd;
margin-top: -2px;
border-top: 10px solid #3F9BD0;
min-width:100px;
min-height:100px;
float:left;
}
<div class="box"></div>