it-swarm-pt.tech

IsNullOrEmpty é equivalente a Array? C #

Existe uma função na biblioteca .NET que retornará true ou false se uma matriz é nula ou vazia? (Igual a string.IsNullOrEmpty).

Eu dei uma olhada na classe Array para uma função como essa, mas não consegui ver nada.

isto é.

var a = new string[]{};
string[] b = null;
var c = new string[]{"hello"};

IsNullOrEmpty(a); //returns true
IsNullOrEmpty(b); //returns true
IsNullOrEmpty(c); //returns false
35
maxp

Não existe um, mas você pode usar este método de extensão:

/// <summary>Indicates whether the specified array is null or has a length of zero.</summary>
/// <param name="array">The array to test.</param>
/// <returns>true if the array parameter is null or has a length of zero; otherwise, false.</returns>
public static bool IsNullOrEmpty(this Array array)
{
    return (array == null || array.Length == 0);
}

Basta colocar isso em uma classe de extensões em algum lugar e ele estenderá Array para ter um método IsNullOrEmpty.

48
Polynomial

Você pode criar seu próprio método de extensão:

public static bool IsNullOrEmpty<T>(this T[] array)
{
    return array == null || array.Length == 0;
}
25
Lee

Com Operador nulo-condicional introduzido no VS 2015, o oposto É Não NullOrEmpty pode ser:

if (array?.Length > 0) {           // similar to if (array != null && array.Length > 0) {

mas a versão IsNullOrEmpty parece um pouco feia devido à precedência do operador:

if (!(array?.Length > 0)) {
20
Slai

Mais genérico se você usar ICollection<T>:

public static bool IsNullOrEmpty<T> (this ICollection<T> collection)
{
    return collection == null || collection.Count == 0;
}
7
Danyal Aytekin

No caso de você inicializar, você matriz como

string[] myEmpytArray = new string[4];

Então, para verificar se os elementos do seu array estão vazios, use

myEmpytArray .All(item => item == null)

Experimentar

 public static bool IsNullOrEmpty<T> (this ICollection<T> collection)
 {
    if (collection == null || collection.Count == 0)
        return true;
    else
       return collection.All(item => item == null);
 }
2
jabu.hlong

Você também pode usar Any na criação do seu método de extensão:

public static bool IsNullOrEmpty<T>(this T[] array) where T : class
    {
        return (array == null || !array.Any());
    }

Não se esqueça de adicionar using System.Linq; nas suas instruções de uso.

1
Willy David Jr

Não, mas você pode escrevê-lo como um método de extensão. Ou um método estático em sua própria biblioteca, se você não gostar de chamar métodos em um tipo nulo.

1
Yuriy Faktorovich

A verificação de nulo ou vazio ou Comprimento foi simplificada com o C # Linq. Com o operador de coalescência nula, pode-se simplesmente fazer isso:

if (array?.Any())
    return true;
else return false;
0
Gauravsa
if (array?.Any() != true) { ... }
  • Não se esqueça de ter using System.Linq;
  • Observe que é necessário comparar explicitamente com true, pois o tipo subjacente é bool?
0
Shmil The Cat

Desde o C # 6.0, o operador de propagação nula pode ser usado para expressar conciso da seguinte maneira:

if (array?.Count.Equals(0) ?? true)

Nota 1: ?? false é necessário, devido ao motivo a seguir

Nota 2: como um bônus, a declaração também é "thread-safe"

0
Teodor Tite