.NET DBNull по сравнению ни с Чем через все типы переменных?

Попробуйте:

while True:
    frame = vs.read()
    cv2.imshow("Frame", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
       break
cv2.destroyAllWindows()
vs.stop()

Честно говоря, я не совсем понимаю, что вы хотите сделать. Вы хотите ждать каждые 30 секунд, прежде чем делать еще одну фотографию? Кажется, ваш код прерывается в цикле и в условии if, и в состоянии else

РЕДАКТИРОВАТЬ: поток 30 с

2 Опция

1) для потока 30 с, вам нужно посчитать количество кадров в секунду и разрыв после достижения fps * 30 петель.

2) создать переменную флага и функцию тайм-аута

flag = 0 

def timeout(sleep):
    time.sleep(sleep)
    flag = 1

threading.Thread(target = timetout, args=(30,)).start()


# in your loop then break when 

if flag == 1:
    break
6
задан RamenChef 20 November 2016 в 23:50
поделиться

6 ответов

Нормальные типы значения (булевские переменные, ints, longs, плавание, дважды, перечисление и структуры) не nullable.

Значение по умолчанию для всех типов значения 0.

CLR не позволит Вам переменные доступа, если они не были установлены. Можно думать, что это не всегда имеет место, но иногда CLR вступает и инициализирует их для Вас. На уровне метода необходимо явно инициализировать все переменные, прежде чем они будут использоваться.

Далее, как другие указывают, так как .net 2.0 там является новым универсальным названным типом Nullable<T>. Существует некоторый компилятор shorthands в C# как интервал? средства Nullable<int>, Дважды? средства Nullable<double> и т.д.

Можно только перенестись Nullable<T> по не допускающим NULL-значения типам значения, который прекрасен, так как ссылки уже имеют способность быть пустыми.

int? x = null;

Для интервала?, в то время как можно протестировать против пустого указателя, иногда более хорошо звонить x.HasValue().

В C# существует также nullable оператор объединения?? когда Вы хотите присвоить nullable не допускающему NULL-значения типу значения. Но если у Вас нет оператора, можно назвать GetValueOrDefault ().

int y = x ?? 2; // y becomes 2 if x is null.
int z = x.GetValueOrDefault(2); // same as y
2
ответ дан 10 December 2019 в 02:55
поделиться

Это то, что Вы после?

if IsNothing(foo) OrElse IsDbNull(foo) Then
    ' Do Something Because foo Is Either Nothing or DBNull.Value
End If

По правде говоря, я не уверен, почему Вы пожелали бы этой структуры. Единственное время, которое я проверил бы на DBNULL.Value, - когда я использую значения, которые прибыли из базы данных, и прежде чем я присвоюсь, сказал что значение от класса Пространства имен ДАННЫХ до некоторого другого класса [т.е. тусклый b как строка = dataReader (0)].

Как правило, если Вы будете обеспокоены объектом, не бывшим инстанцированным, или необходимость в нем, чтобы быть повторно инстанцированными, то затем просто проверка IsNothing будет достаточна.

2
ответ дан 10 December 2019 в 02:55
поделиться

Типы значения не могут быть пустыми. Это нарушает то, что это означает быть Типом Значения. Можно перенести Типы Значения как Nullable (T), который дает Вам большой набор методов, и ни на Что не проверяет, действительно работают. Но у Вас действительно есть много издержек с той оберткой. Возможно, можно ли разъяснить то, что Вы пытаетесь сделать?

Для полноты синтаксис VB для оберток Nullable:

Dim i as Nullable(Of Integer) = Nothing '.NET 2.0/3.0'
Dim j as Integer? = Nothing '.NET 3.5'

Править: Тип значения всегда предварительно инициализируется к значению по умолчанию, 0 для численных данных, лжи для булевских переменных, и т.д.

4
ответ дан 10 December 2019 в 02:55
поделиться

В .NET, которые являются только двумя типами пустого указателя, о котором я знаю, пустой указатель (ничто в VB) и DbNull. Если Вы используете Систему. Nullable, можно использовать тот же пустой синтаксис проверки, как Вы были бы с объектом. Если, если Ваш nullable объект упаковывается.Net 2.0 CLR достаточно умен для выяснения правильного способа обработать это.

Единственный случай я столкнулся с обоими типами, находится в уровне данных приложения, где я мог бы получать доступ к данным базы данных непосредственно. Например, я столкнулся с DbNull в DataTable. Для проверки на оба из этих, пустой указатель вводит в этом situration, Вы могли записать дополнительный метод как (извините в C#):

static public bool IsNull(this object obj)
{
    return obj != null && obj != DbNull.Value;
}

...

if(dataTable[0]["MyColumn"].IsNull())
{
  //do something
}
1
ответ дан 10 December 2019 в 02:55
поделиться

Переменные типа значения не могут содержать пустой указатель, поэтому что означает пустой указатель, пустой указатель означает, что ссылки не указывают нигде. Я не знаю на VB.net, но на c#, можно ли перенести типы значения, чтобы быть использованием nullables"?", как:

int? a = null;
0
ответ дан 10 December 2019 в 02:55
поделиться

Пока Вы разрабатываете с Опцией, Строгой На, (a) не должен быть проблемой. Компилятор будет вопить на Вас. Если Вы волнуетесь по поводу проверки параметры, просто используйте

Public Sub MySub(ByVal param1 as MyObject, ByVal param2 as Integer)
    if param1 is nothing then
         Throw New ArgumentException("param1 cannot be null!")
    end if
    'param2 cannot be null
End Sub

Для (b) Ваш слой взаимодействия базы данных должен обработать это. При использовании LINQ существуют способы обработать это. Если Вы используете введенные наборы данных, там.IsMyVariableNull свойство на строке, которая автоматически генерируется.

Для (c) Вы не должны волноваться о типах значения, но ссылочные типы могут быть проверены с простым, Ничто (или Ничто).

Для (d) можно применить ту же логику после чтения. Протестируйте переменную получения против Ничего.

По большей части простая проверка Является Ничем, получит Вас. Ваш слой взаимодействия базы данных поможет Вам обработать более липкий случай нулевых значений в Ваших данных, но Вам решать обработать их соответственно.

0
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: