...веб-движка с возможностью отображения, комментирования и "присоединения" к контенту дополнительной метаинформации способствующей улучшению инструментов поиска.
Вечная проблема, гугл, яндекс и остальные поисковики по факту тоже агрегаторы и не всё довольны тем, что они делают.
...и не всё довольны тем, что они делают.
Многие сайты в пользовательском соглашении прямо запрещают копировать и распространять информацию без их ведома однако же контент на них зачастую пишут пользователи за которыми авторство в конечном итоге.
using System;
namespace Types
{
public class Person
{
public string FirstName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Так как class это ссылочный тип данных (Reference Type), то
// в стеке создаётся ссылка на экземпляр класса Person,
// под который выделена память в области, называемой кучей (Heap).
var person = new Person
{
FirstName = "John",
Age = 30
};
// Передаём в метод ссылку. Ссылка копируется, а данные
// так и остаются в куче, с ними ничего не происходит.
// Данных может быть хоть мегабайт, они не копируются, а вот
// ссылка копируется и имеет разный размер в зависимости от
// архитектуры x86 или x64, но размер этот крайне маленький (4 байта или 8 байт)
Display(person);
Console.ReadKey();
}
private static void Display(Person person)
{
// Здесь внутри метода находится копия ссылки.
Console.WriteLine($"Name = {person.FirstName}, Age = {person.Age.ToString()}");
}
}
}
-
// Ссылка, так как это class
Person person;
// Ссылка на экземпляр класса, так как мы выделили память в куче.
person = new Person();
using System;
namespace Types
{
class MyClass
{
MyClass my;
}
class Program
{
static void Main(string[] args)
{
// Выделяем память в куче.
// Ссылается на экземпляр класса MyClass, внутри
// которого есть поле типа MyClass со значением null.
MyClass data = new MyClass();
Console.ReadKey();
}
}
}
public class Class1
{
private readonly Action _action;
public Class1(string actionName)
{
switch (actionName)
{
case "1":
_action = Action1;
break;
case "2":
_action = Action2;
break;
default:
throw new Exception($"Unexpected action name {actionName}");
}
}
public void Act()
{
_action.Invoke();
}
private void Action1()
{
// ...
}
private void Action2()
{
// ...
}
}