Передача значения с нулевым значением (целого числа) в sub или функцию

#asp.net #vb.net #integer #nullable

#asp.net #vb.net #целое #nullable

Вопрос:

У меня есть этот код:

    Dim iwidth As Integer? = 125
   Dim iheight As Integer? = 45
   Recs.Add(New With {Key .URLSmallPic = "/EditorImage/BBM4.jpg", Key .URL = "#", Key .Width = iwidth, Key .Height = iheight})
  

Recs — это переменная списка.
Третий и четвертый параметры имеют значение с нулевым значением (целого числа).
Как создать единственную строку кода, не объявляя переменные iwidth и iheight?

Комментарии:

1. Мой вопрос в том, почему вы вообще используете анонимный тип там? Почему вы не объявляете определенный тип для этой цели?

2. @jmcilhinney, спасибо за ваш ответ. Я хочу добавить пользовательскую строку в результат моего запроса Linq.

3. Ваш запрос LINQ создает экземпляры определенного типа или анонимный тип? Если вы хотите иметь возможность создавать экземпляры одного и того же типа двумя разными способами, тогда это должен быть определенный именованный тип.

4. Проблема была решена вашим ответом @jmcilhinney. Большое вам спасибо……

Ответ №1:

Чтобы ответить на ваш вопрос, как было задано:

 Recs.Add(New With {Key .URLSmallPic = "/EditorImage/BBM4.jpg",
                   Key .URL = "#",
                   Key .Width = New Nullable(Of Integer)(125),
                   Key .Height = New Nullable(Of Integer)(45)})
  

Комментарии:

1. Если указано. Ширина определяется как значение с нулевым значением, вам действительно нужно это сделать New Nullable(Of Integer)(125) или вы можете просто сделать 125 ?

2. @Программист, нет такой вещи, как Recs.Width . Прочитайте вопрос еще раз. Recs является List — предположительно List(Of Object) . Код создает экземпляр анонимного типа и добавляет его к нему List . Типы данных свойств этого анонимного типа выводятся из предоставленных значений, поэтому, если вы хотите, чтобы Width и Height были типом Integer? , вы должны предоставить значения этого типа. Если вы укажете Integer , то тип данных свойства также будет Integer .

3. Ах, моя ошибка, но вопрос все еще остается в силе. Если бы вы попытались передать 125 и прочитать его как nullable, сработало бы это, или это автоконверсия, которая была бы предотвращена параметром Strict?

4. Я думаю, это зависит от кода, который считывает данные. Я все еще не совсем понимаю, подходит ли здесь анонимный тип вообще, что также сделало бы вопрос спорным. Я ответил на вопрос, который был задан, независимо от того, был ли это ошибочный вопрос в первую очередь.

5. Да, у них определенно должен быть тип, это было скорее мое любопытство, так как я не часто использую nullables, и вы, возможно, лучший человек, чтобы спросить. Спасибо 🙂