Процесс создание библиотеки классов на языке 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)





