Как я могу добраться 0 как целочисленное значение от (int)null
.
РЕДАКТИРОВАНИЕ 1: Я хочу создать функцию, которая возвратит меня значения по умолчанию для пустого представления в их соответствующих типах данных.
РЕДАКТИРОВАНИЕ 2: Как я могу работать в этом сценарии на использование значения по умолчанию.
(международное) Значение
Где Значение может быть нулевым или любое целочисленное значение. Я не знаю тип данных значения во время выполнения. Но я гарантирую, что Значение должно или содержать нулевое или Целочисленное значение только.
Можно использовать Nullable structure
int value = new Nullable<int>().GetValueOrDefault();
Можно также использовать ключевое слово по умолчанию
int value = default(int);
После второго редактирования:
Вам нужна функция, которая получает любой тип параметра, поэтому будет использоваться объект. Ваша функция аналогична методу расширения Field
на DataRow
public static T GetValue<T>(object value)
{
if (value == null || value == DBNull.Value)
return default(T);
else
return (T)value;
}
Используя эту функцию, если вы хотите, чтобы int (и вы ожидаете, что значение будет int), вы вызываете его как:
int result = GetValue<int>(dataRow["Somefield"]);
Общий метод, который возвращает актуальный экземпляр объекта или значение по умолчанию, может быть реализован следующим образом:
static T Cast<T>(object value) {
if (value is T)
return (T)value;
else
return default(T);
}
Таким образом, использование допустимого значения принесет себе значение:
int value = Cast<int>(4); //value = 4
И нулевое значение получит по умолчанию:
int value = Cast<int>(null); //value = 0
Обратите внимание, что поскольку метод имеет объект в качестве аргумента, это приведет к боксу при использовании со структурными объектами (вроде int).
В Firefox < object >
фиксирует все щелчки и не позволяет им выйти из документа SVG. Разумным обходным путем является покрытие SVG другим элементом, который получает щелчок первым.
К счастью, это можно сделать с помощью CSS:
a {position:relative; display:inline-block;}
a:after {content:""; position:absolute; top:0; left:0; bottom:0; right:0;}
Вы можете добавить псевдокласс : -moz-any-link
в селектор, чтобы сделать его только Gecko.
Невозможно использовать перечислитель, необходимо выполнить цикл с индексом, начиная с последнего предмета:
for (int n = listBox1.Items.Count - 1; n >= 0; --n)
{
string removelistitem = "OBJECT";
if (listBox1.Items[n].ToString().Contains(removelistitem))
{
listBox1.Items.RemoveAt(n);
}
}
-121--3509334- Невозможно преобразовать null
в int, поскольку int является типом значения. Вы можете поместить его в int?
, хотя.
Чего вы хотите добиться?
Вы можете использовать ключевое слово по умолчанию
, чтобы получить значение по умолчанию любого типа данных:
int x = default(int); // == 0
string y = default(string); // == null
// etc.
Это работает с универсальными параметрами:
Bar<T> Foo<T>() {
return new Bar<T>(default(T));
}
, если у вас есть Переменная типа объекта
, которые могут содержать NULL
или значение типа INT
, вы можете использовать Nullable Times и ?? Оператор для безопасного преобразования в целое число:
int a = 42;
object z = a;
int b = (int?)z ?? 0; // == 42
int c = (int?)null ?? 0; // == 0
Способ получения общего класса, который возвращает ничего не работает:
Class GetNull(Of T)
Public Shared Function Value() As T
Return Nothing
End Function
End Class
Debug.Print(GetNull(Of Integer).Value())
Проверьте этот пост для в основном полного метода написания расширения только для этого. Мой сценарий тянет данные из namevalueCollection.
http://hunterconcepts.com/blog/extsionsions_httprequestformquerystring/