using System.Runtime.CompilerServices;
using System.Text;
public static class ca2
{
public static void Main()
{
var d = new Dictionary<long, string>();
var s = "";
var sb = new StringBuilder();
var rnd = new Random();
var cnt = rnd.Next(8, 12);
for (int i = 0; i < cnt; i++) d.Add(rnd.Next(), $"Name {i}");
foreach (var v in d) sb.Append($"{v.Value} = {v.Key}, ");
s = sb.ToString();
s = s.Substring(0, s.Length - 2);
s.print();
}
public static void print(this string s) => Console.WriteLine(s);
}
... если интересует производительность StringBuilder
впереди планеты всей... Проблема в том, что для LinkedList операция чтения O(n), вставки - O(1). Для List - операция чтения O(1), вставки - O(n). Получается, что скорость равна?если n=1, умозрительно да...
CancellationToken token = cancelTokenSource.Token;
///...
Task task2 = new Task(() =>
{
for (int i = 1; i < 10; i++)
{
if (token.IsCancellationRequested)
{
Console.WriteLine("Операция прервана");
return;
}
Console.WriteLine($"2. Квадрат числа {i} равен {i * i}");
Thread.Sleep(200);
}
});
.. они у тебя в одной области видимости, и ты бодро проверяешь статус завершения.. зачем? ;)))using System.Threading.Tasks;
using System.Threading;
using System;
class cancelTokenTest
{
static void Main(string[] args)
{
var cancelTokenSource = new CancellationTokenSource();
var token = cancelTokenSource.Token;
var cancelTokenSource2 = new CancellationTokenSource();
var token2 = cancelTokenSource2.Token;
var task = new Task(() =>
{
for (int i = 1; i < 100000; i++)
{
if (token.IsCancellationRequested)
{
Console.WriteLine("Операция 1 прервана");
return;
}
Console.WriteLine($"1. Квадрат числа {i} равен {i * i}");
Thread.Sleep(200);
}
}, token);
var task2 = new Task(() =>
{
for (int i = 10; i < 1000000; i++)
{
if (token2.IsCancellationRequested)
{
Console.WriteLine("Операция 2 прервана");
return;
}
Console.WriteLine($"2. Квадрат числа {i} равен {i * i}");
Thread.Sleep(200);
}
}, token2);
task.Start();
task2.Start();
Thread.Sleep(1000);
cancelTokenSource.Cancel();
Thread.Sleep(50); // без этого не успевает обновиться статус у меня..
Console.WriteLine($"Task Status 1: {task.Status}");
Thread.Sleep(1000);
cancelTokenSource2.Cancel();
Thread.Sleep(200); // можете закаментить для сравнения, и поиграть со значениями..
Console.WriteLine($"Task Status 2: {task2.Status}");
cancelTokenSource.Dispose();
cancelTokenSource2.Dispose();
}
}
using System.Runtime.CompilerServices;
public static class cancelTokenTest8and2task
{
public static void print(this string s) => Console.WriteLine(s);
public static void Main()
{
var ts1 = new CancellationTokenSource();
var tk1 = ts1.Token;
var ts2 = new CancellationTokenSource();
var tk2 = ts2.Token;
var t1 = new Task(() => {
for (int i = 1; i < 100000; i++)
{
if (tk1.IsCancellationRequested)
{
"Операция t1 прервана".print();
return;
}
$"t1. Квадрат числа {i} равен {i * i}".print();
Thread.Sleep(200);
}
});
var t2 = new Task(() => {
for (int i = 1; i < 100000; i++)
{
if (tk2.IsCancellationRequested)
{
"Операция t2 прервана".print();
return;
}
$"t2. Корень числа {i} равен {Math.Sqrt(i)}".print();
Thread.Sleep(200);
}
});
t1.Start();
t2.Start();
Thread.Sleep(1000);
ts1.Cancel();
Thread.Sleep(50);
$"\nTask1 status: {t1.Status}".print();
Thread.Sleep(1000);
ts2.Cancel();
Thread.Sleep(200);
$"\nTask2 status: {t2.Status}".print();
ts1.Dispose();
ts2.Dispose();
}
}
работает в дот нет 8 ... кроме using System.Runtime.CompilerServices;
я разницы пока не вижу (имена не в счет!)...var floatArray = new float[] { -999, 0, -9, -1, 2, 3, -1 };
var bits = 0x00000000;
int check(float f) => (f >= 0) switch
{
(true) => 1,
_ => 0
};
string tobin(int i) => Convert.ToString(i, 2);
foreach (var f in floatArray)
{
Console.Write(f);
Console.Write($";\t{check(f)}");
Console.Write($";\t{tobin(bits)}");
bits = bits | (check(f) & 0x1);
bits <<= 1;
Console.WriteLine($";\t{tobin(bits)}");
}
var floatArray = new float[] { -999, 0, -9, -1, 2, 3, -1 };
var bits = 0x00000000;
int check(float f) => (f >= 0) switch
{
(true) => 1,
_ => 0
};
string tobin(int i) => Convert.ToString(i, 2);
foreach (var f in floatArray)
{
Console.Write(f);
Console.Write($";\t{check(f)}");
Console.Write($";\t{tobin(bits)}");
bits = bits | check(f);
bits <<= 1;
Console.WriteLine($";\t{tobin(bits)}");
}
var floatArray = new float[] { -999, 0, -9, -1, 2, 3, -1 };
var bits = 0x00000000;
int check(float f) => (f >= 0) switch
{
(true) => 1,
_ => 0
};
string tobin(int i) => Convert.ToString(i, 2);
foreach (var f in floatArray)
{
bits <<= 1;
Console.Write($"{f};\t{check(f)};\t{tobin(bits)}");
bits |= check(f);
Console.WriteLine($";\t{tobin(bits)}");
}
Надо ли учить Си? Или может лучше начать с C#, а дальше уже выучу C++?уже три разных языка.. мое мнение - если хватит азарта, учите все ;)))
fr1.имя_поля
Form1 fr1 = new Form1();
.. очень печальный симптом.....
Screen[] sc = Screen.AllScreens;
// Form1 fr1 = new Form1();
// тут внимательно сравните две следующие строки
// fr1.Location = sc[0].Bounds.Location;
Location = sc[0].Bounds.Location;
Application.EnableVisualStyles();
// ... далее доступ к полям формы в таком же стиле - просто по имени
// watcher у вас тоже уже есть. отдельный класс не нужен,
// сначала запустите простейший тест, совершенствуйте после первого успеха
...
watcher
то что мелькнуло вроде локальная переменная метода. просто сделайте полем класса формы. в своем файле, дизайнер не трогаем. задаем поле формы, а инициализируем экземпляр и настройки так как уже начато.. и смотрим что там будет ломаться дальше )))utf-8 -> win-1251
собственно и была какое то время самой часто ошибкой.utf-8
. да и визуал студия вроде как уже много лет корректно работает с веб проектами.far manager
очень хорошо определяет и показывает реальную кодировку. mc
вроде тоже.S7 — 1500поддерживается dotnet, не сбивайте с толку ни себя, ни возможных авторов..
Например, имеется значение real на первом адресе сотого дата блокани на одной платформе не используется
real
для адресов, только беззнаковые целочисленные нужной разрядностиvar lst = File.ReadAllLines("bla..bla..bla");
foreach (var s in lst) {var toks = (s).Split(':'); ...;};
StreamReader
в общем то и не нужен (!! важно, при больших объёмах файлов, чтение целиком, может критично расходовать память, в этом случае снова см ответ Василий Банников)namespace list_and_parse
{
internal static class Program
{
internal static void Main(string[] args)
{
var lst = File.ReadAllLines("FileName.conf");
foreach (var s in lst)
{
var toks = s.Split(":");
string check() => (toks[0] == "Volume", toks[0] == "IsMarkers", toks[0] == "Mouse") switch
{
(true, _, _) => $"Volume={float.Parse(toks[1])}",
(_, true, _) => $"IsMarkers={bool.Parse(toks[1])}",
(_, _, true) => $"Mouse={int.Parse(toks[1])}",
_ => ".. ups (("
};
check().print();
};
}
internal static void print(this string s) => Console.WriteLine(s);
}
}
namespace list_and_parse
{
internal static class Program
{
internal static void Main(string[] args)
{
var Volume = 0.0;
var IsMarkers = false;
var Mouse = 0;
var lst = File.ReadAllLines("FileName.conf");
foreach (var s in lst)
{
var toks = s.Split(":");
string check() => (toks[0] == "Volume", toks[0] == "IsMarkers", toks[0] == "Mouse") switch
{
(true, _, _) => $"Volume=>{double.TryParse(toks[1], out Volume)}",
(_, true, _) => $"IsMarkers=>{bool.TryParse(toks[1], out IsMarkers)}",
(_, _, true) => $"Mouse=>{int.TryParse(toks[1], out Mouse)}",
_ => ".. ups (("
};
check().print();
};
"".print();
$"Volume={Volume}".print();
$"IsMarkers={IsMarkers}".print();
$"Mouse={Mouse}".print();
}
internal static void print(this string s) => Console.WriteLine(s);
}
}