
Cartão da Natal da Empresa.
Desejamos feliz natal para vocês todos!
Exercitando de pensamento crítico em tecnologia, mercado e política
string cpf = "822.232.339-99";
...
if ( MinhaClasse.EhCpf(cpf) ){
//código válido...
}
string cpf = "822.232.339-99";
...
if ( cpf.EhCpf() ){
//código válido...
}
namespace MeuNamespace{
public static class MinhaClasse{
public static bool EhCpf(string cpf){
//Trata se eh CPF
}
}
}
namespace MeuNamespace{Só isso! Agora sua classe "MinhaClasse" pode ser usada como um extension method da classe string. Mas para isso, você deve referenciar o namespace com a clausula using no contexto do código, como descrito no exemplo.
public static class MinhaClasse{
public static bool EhCpf(this string cpf){
//Trata se eh CPF
}
}
}
int contador = 0;
private void Form1_Load(object sender, System.EventArgs e)
{
Application.Idle += ( o, e) => { contador++ ; };
}
Esse é só um exemplo, mas aviso que nesse caso, o "Form1" em questão é o principal e
quando ele fecha, é porque a aplicação fecha, então tudo bem ter um lambda expression
aí (anônimo). Mas possivelmente não será uma boa prática para outros casos.
A razão disso está no fato de que como o evento Idle é estático, é muito importante que
no momento em que você vincula um delegate do tipo EventHandler a ele, é necesário
que você mantenha uma rotina de desvinculação preparada para retirar o evento, senão
isso pode se tornar um memory leak.int contador = 0;
EventHandler myHandler = new EventHandler(Contar);
private void Contar( object sender, EventArgs e)
{
contador++;
}
private void Form1_Load(object sender, System.EventArgs e)
{
Application.Idle += myHandler
;
}
//o código de desvinculação pode ficar associado ao destrutor
~Form1()
{
Application.Idle -= myHandler ;
}
Embora creia que essa falha específica já será corrigida na próxima versão do Chrome, isso de uma certa forma mostra que em termos práticos não haverá muita cooperação da MS (com uma certa legitimidade) com o Google no desenvolvimento de seus produtos, pelo menos enquanto forem "beta". :-)
"// Completely undocumented from Microsoft. You can find this information by
// disassembling Vista's SP1 kernel32.dll with your favorite disassembler.
enum PROCESS_INFORMATION_CLASS {
ProcessExecuteFlags = 0x22,
}"
Mas afinal, é por uma boa causa. (Segundo Hanselman, isso permite que o browser fique mais seguro nos sistemas operacionais Windows), apesar de que a "documentação inexistente" não é tão inexistente assim. :-) E também tem aqui , e aqui.
Se quiser ler o post na íntegra, acesse aqui.
Aliás, falando de Bugs, Windows Forms DataBinding no .net está infestado deles, é como um campo minado: funciona aquilo que está nos exemplos do MSDN e um pouco mais, mas se você quiser entrar a fundo, vai ter que lidar com alguns workarounds. Funciona, mas existem tweeks delicados.
Toda vez que vejo um link para esse site do programa connect, nunca tenho sorte, todos os bugs realmente reconhecidos pela corp ficam marcados como fechados e nao solucionados.O desenvolvedor que postou esse bug ainda se deu ao trabalho de fornecer a solução, mas vejam a resposta do funcionário da MS.
“Para garantir nossos releases futuros na mais alta qualidade, estabilidade e facilidade de instalação, nós estamos evitando realizar mudanças arquiteturais significativas em algumas partes do produto. Baseada em nossa investigação, a correção mais indicada requereria tais mudanças”
“To ensure our next release is of high quality, stable and easy to install we are refraining from making significant architectural changes in some parts of the product. Based on our investigation, the most reasonable fix for this bug would require such changes.”
Arquiteturais significativas??? É só trocar um método pelo outro, pois a implementação que foi realizada não contempla interfaces, e a proposta de solução contempla.