Conforme fui aprendendo C# surgiu algumas duvidas
1) List, HashSet, Dictionary e Arrays.
Qual é melhor usar num codigo? Qual a diferença entre as lists e os arrays? Tem o mesmo objetivo? Se não, quando devo usar uma ou outra?
2) Qual é exatamente a função do "this"? Indicar que o comando a seguir esta sendo referido a um objeto dentro de uma classe? Vi uns codigos onde usavam em variaveis e outros antes de metodos. EX: this._variavel, this.Close();.
3) Protected e private. São usados para determinar a visibilidade de um objeto. Protected eu usaria em caso de usar um objeto em outra classe que seria herança, e private apenas para a mesma classe?
4) Sobre o banco de dados. Qual é o mais usado com C#?