O que você acha ?? = Operador em C#? [fechado
-
23-09-2019 - |
Pergunta
Você acha que C# apoiará algo como ?? = Operador?
Em vez disso:
if (list == null)
list = new List<int>();
Pode ser possível escrever:
list ??= new List<int>();
Agora, eu poderia usar (mas parece -me que não é bem legível):
list = list ?? new List<int>();
Solução
Eu sempre quis algo assim. Eu o usaria com muito mais frequência do que o ??
por si próprio.
O que eu realmente quero, no entanto, é uma forma de operador que permite desreferenciar o objeto apenas se não for nulo. Para substituir isso:
int count = (list != null)? list.Count : 0
Com algo assim:
int count = list??.Count : 0
O que seria especialmente útil para mim com longas cadeias de referências (design ruim, eu sei), mas por exemplo
int count = foo??.bar??.baz??.list??.Count : 0
Isso atualmente não é possível com ??
Porque você só pode dizer "atribuir a foo, ou uma alternativa se nula", mas não "atribuir a um propriedade de foo, ou uma alternativa se nulo. "
Outras dicas
Nenhum fluxo de trabalho OOB fará isso para você.Você precisa criar um fluxo de trabalho do SharePoint Designer que fará o seguinte:
- .
- Leia a propriedade de departamento
- Adicionar se condições para verificar o valor da propriedade de departamentos
- dentro de cada bloco, envie o e-mail para os usuários corretos.
Espero que isso ajude.
Um truque que encontrei em algum lugar aqui no Stackoverflow era fazer algo assim ...
private List<string> myList;
public List<string> MyProp
{
get { return myList ?? (myList= new List<string>()); }
}
... Você pode usar uma avaliação preguiçosa semelhante em seu código.
Eu gosto - é uma maneira agradável e sucinta de expressar uma expressão de carregamento preguiçoso. Se é ou não adicionado à linguagem é outra coisa - como Eric Lippert adora apontar, novos recursos requerem quantidades significativas de trabalho para implementar e, como tal, devem contribuir com um líquido significativo positivo para o idioma para ser incluído.
A menos que eu leia sua pergunta errada, esse operador existe em C#: http://msdn.microsoft.com/en-us/library/ms173224(vs.80).aspx