Отображение и скрытие курсора в Unity
Чтобы скрыть курсор
Cursor.lockState = CursorLockMode.Confined;
Cursor.visible = false;
Чтобы отобразить курсор
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
Чтобы скрыть курсор
Cursor.lockState = CursorLockMode.Confined;
Cursor.visible = false;
Чтобы отобразить курсор
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
Просто пример простого Comparer-а для сортировок
//Descending Sort, Integer
var queue = new PriorityQueue<int, int>(Comparer<int>.Create((x, y) => y - x));
//Ascending Sort, Object
var queue = new PriorityQueue<ObjectA, ObjectB>(Comparer<ObjectB>.Create((x, y) => x.Something.CompareTo(y.Something));
Просто пример поиска нолей в конце у факториала.
public int TrailingZeroes(int n) {
int result = 0;
while(n!=0){
result += n/5;
n = n/5;
}
return result;
}
Дано:
Массив точек на плоскости: points[][] Xi и Yi.
Надо найти:
Сколько максимально точек принадлежит одной прямой.
Пример:
Пример прокручивания/вращения массива Array K раз на C#
public static void Rotate(int[] nums, int k) {
int len = nums.Length;
int cnt = k%len;
if ((len<2)||(cnt==0)){return;}
int x = 0;
int val = nums[x];
int val_prev = nums[x];
int x_start = x;
for (int i = 0; i<len;i++)
{
x = x+cnt<len?x+cnt:(x+cnt)%len;
val_prev = nums[x];
nums[x] = val;
if (x_start == x)
{
x++;
val = nums[x];
x_start = x;
}
else
{
val = val_prev;
}
}
}
Смысл на примере:
Есть массив: [1,2,3,4,5]
Проворачиваем его 3 раза: K=3.
Результат:
[3,4,5,1,2]
Пример:
using System;
using Newtonsoft.Json;
using System.Xml.Linq;
namespace ConsoleAppTest
{
class Program
{
static void Main(string[] args)
{
string xml = @"<response><user>Roman</user><status>Active</status></response>";
XDocument doc = XDocument.Parse(xml);
string jsn = JsonConvert.SerializeXNode(doc);
dynamic response = JsonConvert.DeserializeObject(jsn);
Console.WriteLine(response.response.status);
Console.WriteLine(response.response.user);
Console.ReadKey();
}
}
}
Пример метода производящего запрос data на сервер и получение ответа res по указанному адресу url:
public static string ServerRequest(string data, string url)
{
string res = "";
try
{
// Чтобы не проверял SSL а просто шёл и брал что дают по HTTPS
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
delegate (object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true; // **** Всегда принимаем
};
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(data);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
res = result;
}
}
catch (WebException ex)
{
using (var streamReader = new StreamReader(ex.Response.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
res = result;
}
Program.Logger.Error(ex, ex.Message);
}
Program.Logger.Info(res);
return res;
}
Начиная с версии C# 7 в языке появилась возможность, позволяющая объявить локальную переменную, ссылающуюся на элемент массива или на поле в объекте:
int[] simpleArray = {0, 1, 2, 3, 4, 5, 6, 7, 8};
ref int simpleElementRef = ref simpleArray[3];
В примере выше simpleElementRef — ссылка на simpleArray[3]. Изменение simpleElementRef приводит к изменению элемента массива:
simpleElementRef *= 15;
Console.WriteLine(simpleElementRef); // 15
Console.WriteLine(simpleArray[3]); // 15
В качестве цели ссылочной локальной переменной может быть указан элемент массива, поле, или обычная локальная переменная. Целью не может быть свойство.
Пример добавления логирования в WEB приложение на .NET Core на основе NLog.
Первоначально добавляем через Nuget пакет:
NLog.Web.AspNetCore
Затем добавляем в корень проекта файл nlog.config следующего содержания:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="info"
internalLogFile="internal-nlog.txt">
<!-- enable asp.net core layout renderers -->
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<!-- the targets to write to -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="logs/nlog-all-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
<!-- another file log, only own logs. Uses some ASP.NET core renderers -->
<target xsi:type="File" name="ownFile-web" fileName="logs/nlog-own-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--Skip non-critical Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" maxLevel="Info" final="true" />
<!-- BlackHole without writeTo -->
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>
В данном файле содержатся настройки логирования, куда и как и что сохранять. Обязательно для данного файла необходимо выставить в параметрах свойство Copy to output directory: Copy Always.
Хорошая новость, теперь можно реализовать SWITCH по новому.
В C# 8 версии вводятся выражения-переключатели, которые реализуют более краткий синтаксис возвращения значения.
Вот синтаксис выражения SWITCH на примере:
static string Display(object o) => o switch
{
Point { X: 0, Y: 0 } => "origin",
Point { X: var x, Y: var y } => $"({x}, {y})",
_ => "unknown"
};
В этом примере сначала проверяется соответствие шаблону типа Point, а затем шаблону свойств внутри {фигурных скобок}.
Затем символ подчеркивания "_" Описывает шаблон сброса, аналогичный «default:» для операторов switch.