C# - Modificadores de acesso

Li que em C#, quando não há um modificador de acesso [como private, protected, public, internal] especificado, o padrão é private.

Olhem o exemplo abaixo, criado pelo Visual Studio .NET 2010:

namespace TestandoThread
{
    class ClasseThread
    {
        //Código irrelevante
    }
}
namespace TestandoThread
{
    class ThreadMain
    {
        static void Main(string[] args)
        {
              ClasseThread classeThread1 = new ClasseThread();
        }
    }
}

Eu esperaria um erro de sintaxe ao criar um objeto ClasseThread. Já que o modificador de acesso é private por padrão, como estou conseguindo criar o objeto? Percebam que não coloquei um construtor padrão public. O compilador me cria um public implicitamente?

Na verdade a classe é privada ao namespace. Ela é acessível por todos do mesmo namespace, mas não acessível por classes de outros namespaces.

vc também tem o sealed :

http://msdn.microsoft.com/pt-br/library/88c54tsw(v=vs.90).aspx

outras:
http://www.estudandodotnet.com.br/?p=471

Esse não é o conceito do modificador internal?

Esse não é o conceito do modificador internal?[/quote]

Sim. Se você não especificar o modificador, a classe é assumida como sendo internal.

Esse não é o conceito do modificador internal?[/quote]

Sim. Se você não especificar o modificador, a classe é assumida como sendo internal.[/quote]

Espere um pouco…se eu não especificar o modificador, é private, não internal, né?!

Esse não é o conceito do modificador internal?[/quote]

Sim. Se você não especificar o modificador, a classe é assumida como sendo internal.[/quote]

Espere um pouco…se eu não especificar o modificador, é private, não internal, né?![/quote]

Para classe é internal. Classes em C# só aceitam dois especificadores, public e internal. Se você não especificar o atributo, ele é marcado como internal.

Esse não é o conceito do modificador internal?[/quote]

Sim. Se você não especificar o modificador, a classe é assumida como sendo internal.[/quote]

Espere um pouco…se eu não especificar o modificador, é private, não internal, né?![/quote]

Para classe é internal. Classes em C# só aceitam dois especificadores, public e internal. Se você não especificar o atributo, ele é marcado como internal.
[/quote]

Vlw!

Tópico movido para o fórum de outras linguagens.

E só corrigindo, internal não se refere ao namespace, mas ao assembly.
Ou seja, todas as classes que estiverem na mesma dll, irão enxergar o internal, mesmo que sejam de namespaces diferentes.

O equivalente ao assembly do C# no Java é o .jar. Sinto muita falta de um modificador assim em Java.