Преобразование файлов исходного кода (C# и Java)

Обновлен: Ноябрь 2007

Соглашения об именах для файлов, содержащих классы C#, немного отличается от Java. В языке Java у всех файлов исходного кода расширение JAVA. Каждый файл исходного кода содержит одно объявление открытого класса верхнего уровня, и имя класса должно совпадать с именем файла. Другими словами, класс с именем Customer, объявленный с открытой областью, должен быть определен в файле исходного кода с именем Customer.java.

Исходный код C# обозначается расширением CS. В отличие от Java, файлы исходного кода могут содержать несколько объявлений открытых классов верхнего уровня, и имя файла не обязательно должно совпадать с какими-либо именами классов.

Объявления верхнего уровня

Как в Java, так и в C#, исходный код начинается с нескольких объявлений верхнего уровня, располагаемых в определенной последовательности. Между объявлениями в программах на Java и C# имеется лишь несколько различий.

Объявления верхнего уровня в языке Java

В языке Java для группирования классов используется ключевое слово package. Для упакованного класса в первой исполняемой строке файла исходного кода должно присутствовать ключевое слово package. Дальше идут любые операторы import, необходимые для доступа к классам, а затем объявление класса (см. следующий пример).

package Acme;
import java.io.*;
class Customer
{
    ...
}

Объявления верхнего уровня в языке C#

В языке C# логически связанные классы группируются на основе концепции пространств имен при помощи ключевого слова namespace. Здесь все подобно пакетам Java и в двух разных пространствах имен может присутствовать класс с одинаковым именем. Чтобы получить доступ к классам, определенным в пространстве имен, которое является внешним по отношению к текущему, после директивы using укажите пространство имен, как показано ниже.

using System.IO;

namespace Acme 
{
    class Customer
    {
        // ...
    }
}

Обратите внимание, что директивы using можно помещать в объявление пространства имен, в случае чего такие импортированные пространства имен образуют часть содержащего пространства имен.

В Java несколько пакетов в одном файле исходного кода быть не может. При этом, язык C# не допускает несколько пространств имен в одном файле CS (см. далее).

namespace AcmeAccounting
{
    public class GetDetails
    {
        // ...
    }
}

namespace AcmeFinance
{
    public class ShowDetails
    {
        // ...
    }
}

Полные имена и псевдонимы пространства имен

Как и в языке Java, доступ к классам можно получить через платформу .NET Framework или определенные пользователем пространства имен без ссылки using для такого пространства имен, указав полное имя класса, такое как DataSet или AcmeAccounting.GetDetails из предыдущего примера.

Полные имена могут быть длинными и громоздкими, и в таких случаях для указания короткого имени (псевдонима) можно использовать ключевое слово using, которое позволит сделать код удобочитаемым.

В следующем коде создается псевдоним, ссылающийся на код, написанный в вымышленной компании.

using DataTier = Acme.SQLCode.Client;

class OutputSales
{
    static void Main()
    {
        int sales = DataTier.GetSales("January");
        System.Console.WriteLine("January's Sales: {0}", sales);
    }
}

Обратите внимание, что в синтаксисе для WriteLine с {x} в строке формата, x обозначает положение вставки значения в списке аргументов. Предположив, что метод GetSales вернет значение 500, результатом приложения будет следующий.

January's Sales: 500

Директивы препроцессора

Как и в языках C и C++, в C# имеются препроцессорные директивы, которые дают возможность условно пропускать разделы исходных файлов, сообщать об условиях ошибок и предупреждений и устанавливать отдельные области исходного кода. Термин "препроцессорные директивы" используется только для сохранения единообразия с языками программирования C и C++, поскольку в языке C# отдельного препроцессорного шага не существует. Дополнительные сведения см. в разделе Директивы препроцессора C#.

См. также

Основные понятия

Руководство по программированию в C#

Другие ресурсы

Язык программирования C# для разработчиков на Java