Процесс создание библиотеки классов на языке C# с помощью Visual Studio:
Для начала нужно создать проект:
"Файл->Создать->Проект..."
Далее нужно выбрать тип.
У нас это "C#->Консольное приложение"
После чего нужно как то назвать проект и нажать ОК
Проект создан.
Теперь нужно создать проект самой DLL.
Для этого нужно:
1) Нажать в окне "Обозреватель решений" по строке Решение "Ваше_название" правой кнопкой мыши.
2) В открывшемся окне "Добавить->Создать проект"
3) Делам все так же как и при создании первого проекта. Но меняем название и выбираем "Библиотека классов"
4) Нажимаем ОК
5) В созданном проекте переименуйте файл Class1.cs в ваше название у меня это Vector.cs
Написание кода:
Это для библиотеки классов. (второго проекта)
using System; //Стандартная библиотека namespace Vector //Пространство имен (по этому имени подключается библиотека) { public enum vType { NULL, RANDOM, } //Для примере создал 2 класса. //Vector2 - Класс 2d вектора. Vector3 - тоже самое только для 3D мира public class Vector2 //Публичный (доступен всем) класс с именем Vector2 { public float x { get; set; } //Публичная переменная типа float (Не целое число. К примеру: 5.41) c именем x public float y { get; set; } //Публичная переменная типа float (Не целое число. К примеру: 5.41) c именем y //Конструктор класса через который можно создать новый экземпляр класса. Принимает уже готовый класс. В этом случае вещь бесполезная. //Но если добавить оператор который позволяет сложить 2 класса и вернет новый класс Vector2 то как раз этот конструктор пригодится. public Vector2(Vector2 vector) { x = vector.x; //Берем переменную x из присланного экземпляра и пишем ее в переменную x нашего экземпляра y = vector.y; //Берем переменную y из присланного экземпляра и пишем ее в переменную x нашего экземпляра } //Еще один конструктор. Но этот уже позволяет задать точную позицию. public Vector2(float x, float y) { this.x = x; //Берем переменную x (this. означает что переменная будет браться не из функции а из экземпляра) и записываем туда полученное значение. this.y = y; //Берем переменную y (this. означает что переменная будет браться не из функции а из экземпляра) и записываем туда полученное значение. } //А тут уже интересно. //В данном конструкторе есть переменные которые уже заданы по умолчанию. Вот тут через enum (который в начале скрипта) можно указать тип. //Либо не указывать нечего и тогда будут стандартные значения. minRandom и maxRandom позволяют задать от какого до какого значения нужно создать вектор. //Но они работают только если type равен vType.RANDOM public Vector2(vType type = vType.NULL, int minRandom = 0, int maxRandom = 5) { //switch почти тоже самое как if(p1 == p2){} но он быстрей и меняется только 1 значение так что юзаем его. type - полученная из конструктора переменная. switch (type) { case vType.NULL: // Если type равно vType.NULL то создаем вектор с координатами x=0, y=0. x = 0;//Присвоение переменным значения 0 y = 0; break;//Выход из конструкции switch (то есть код продолжит выполнение после закрывающей скобки) case vType.RANDOM://Ну а если type равен vType.RANDOM то... Random r = new Random();//Создаем новый экземпляр класса Random (Для него и нужна библиотека System в первой строке скрипта) x = r.Next(minRandom, maxRandom); // Присваиваем переменной x то значение которое вернет функция Next в классе Random который у нас присвоен переменной r y = r.Next(minRandom, maxRandom); // Присваиваем переменной y то значение которое вернет функция Next в классе Random который у нас присвоен переменной r break; } } //Так как хотелось бы узнать что у нас записано в классе создаем функцию ToString() //Тут маленький облом... Она уже существует и вернет название класса. Чтобы ее переопределить нужно дописать override. //Публичная функция ToString которая вернет string (то есть если написать string p = ToString(); это будет тоже самое что написать string p = "Текст";) //Только вместо "Текст" там будет значение переменных из класса. public override string ToString() { //return - заставляет вернуть значение. string.Format - форматирует строку там где написано {0} будет вставлена первая переменная аргументов //тут это x и т.д. return string.Format("{0} {1}", x, y); } } //Класс Vector3 все так же как и в Vector2 только есть еще z координата. public class Vector3 { public float x { get; set; } public float y { get; set; } public float z { get; set; } public Vector3(Vector3 vector) { x = vector.x; y = vector.y; z = vector.z; } public Vector3(float x, float y, float z) { this.x = x; this.y = y; this.z = z; } public Vector3(vType type = vType.NULL, int minRandom = 0, int maxRandom = 5) { switch (type) { case vType.NULL: x = 0; y = 0; z = 0; break; case vType.RANDOM: Random r = new Random(); x = r.Next(minRandom, maxRandom); y = r.Next(minRandom, maxRandom); z = r.Next(minRandom, maxRandom); break; } } public override string ToString() { return string.Format("{0} {1} {2}", x, y, z); } } }
Жмем правой кнопкой по проекту библиотеки (у меня это Vector) после чего по кнопке "Собрать"
Теперь как это использовать:
В первом проекте "Правой кнопкой по вкладке Ссылки->Добавить ссылку" и выбираем библиотеку (она в папке проекта библиотеки-bin-Debug)
Код для файла Program.cs (главный класс консольного приложения)
using System; using Vector; //Подключаем библиотеку namespace Loader { class Program //Класс Program { //Создаем экземпляр класса Vector3 через конструктор public Vector3(vType type = vType.NULL, int minRandom = 0, int maxRandom = 5) //И указываем что это будет рандомный (случайный) вектор. public static Vector3 v3_1 = new Vector3(vType.RANDOM); //Создаем экземпляр класса Vector3 через конструктор public Vector3(vType type = vType.NULL, int minRandom = 0, int maxRandom = 5) //Оставляем стандартную комбинацию параметров. public static Vector3 v3_2 = new Vector3(); //Тоже самое только не Vector3 а Vector2. public static Vector2 v2_1 = new Vector2(vType.RANDOM); //Указываем в конструкторе точные координаты. public static Vector2 v2_2 = new Vector2(50, 10); static void Main(string[] args)//Главная функция программы. { //Выводим в консоль значение векторов v3_1 и v3_2. \n - перенос на новую строку //Как раз тут и пригодилась функция ToString() Console.WriteLine("v3_1: {0}\nv3_2: {1}", v3_1.ToString(), v3_2.ToString()); Console.ReadKey();//Ждем нажатие любой кнопки //После нажатия кнопки //Выводим в консоль значение векторов v2_1 и v2_2. \n - перенос на новую строку Console.WriteLine("v2_1: {0}\nv2_2: {1}", v2_1.ToString(), v2_2.ToString()); Console.ReadKey();//Ждем нажатие любой кнопки (после ее нажатия программа завершит свою роботу.) } } }
После запуска программы (кнопка Пуск на панели инструментов) все как и заказывали.
Всем удачи. Фыр, фыр :3
Отредактировано Jack_Savage (2017-03-23 14:26:39)