C# (C sharp) é uma linguagem de programação orientada à objetos de propósitos gerais e fortemente tipada.
Foi criada pela Microsoft e faz parte do framework .NET
.NET Framework é um conjunto de ferramentas criado pela Microsoft que permite uma 'comunicação' entre várias linguagens, graças a um poderoso conjunto de bibliotecas que fazem com que os programas .NET rodem em um ambiente chamado CLR(Common Language Runtime), ao invés de rodar diretamente no hardware, como em C, C++ ou Assembly.
Ou seja, existe uma infraestrutura comum entre as linguagens da .NET. Isso se chama CLI - Common Language Infrastructure -, que, sem dúvida, é o grande diferencial da tecnologia .NET.
A framework fornece um conjunto de ferramentas que geram códigos e funcionalidades de baixo nível automaticamente, permitindo que o programador foque seu tempo na lógica e desenvolvimento do programa, ao invés de se preocupar com alguns detalhes do programa/sistema, como o gerenciamento de memória e garbage collector, aumentando a eficiência do programador.
Assim como muitas outras, é multi-paradigma. Porém, uma das características do C# é portabilidade, como por exemplo, para sistemas embarcados
O 'C' de C#, assim como o 'C' de C++, e de Objective-C não são por acaso. A sintaxe é inspirada na linguagem C.
Orientação a objetos, gerenciamento automático de lixo (garbage collector), CLI/JVM (bytecode), portabilidade...sim, Java!
C# foi bastante baseada em Java.
Qual a diferença, então, entre Java e C#? Como saber qual estudar?
Á priori, as duas linguagens são de uso genérico, ou seja, podem ser usadas para fazer quase qualquer tipo de aplicação.
A associação que se faz é, sem dúvida:
C# - Microsoft Windows
Java - software livre