NET 6. که چندین ماهی میباشد منتشر طراحی اپلیکیشن گردیده است، خصوصیت های نو نیکی را ارائه داده میباشد که منجر بهبود عملکرد نرمافزار های دات نت گردیدهاست.
تا قبل از این در این نوشتهیعلمی به بعضی از خصوصیت های نو دات نت 6 اشاره کردهایم. امروز میخواهیم به معرفی 12 گزینه از API های نو دات نت 6 بپردازیم.
DateOnly و TimeOnly
DateOnly و TimeOnly دو نوع نو میباشند رایاپارس که در NET 6. معرفی گردیده اند. آنها بخشی از تاریخ یا این که مجال DateTime را علامت میدهند.
// public DateOnly(int year, int month, int day)
// public DateOnly(int year, int month, int day, Calendar calendar)
DateOnly dateOnly = new(2021, 9, 25);
Console.WriteLine(dateOnly);
// Output: 25-Sep-21
// public TimeOnly(int hour, int minute)
// public TimeOnly(int hour, int minute, int second)
// public TimeOnly(int hour, int minute, int second, int millisecond)
// public TimeOnly(long ticks)
TimeOnly timeOnly = new(19, 0, 0);
Console.WriteLine(timeOnly);
// Output: 19:00 PM
DateOnly dateOnlyFromDate = DateOnly.FromDateTime(DateTime.Now);
Console.WriteLine(dateOnlyFromDate);
// Output: 23-Sep-21
TimeOnly timeOnlyFromDate = TimeOnly.FromDateTime(DateTime.Now);
Console.WriteLine(timeOnlyFromDate);
// Output: 21:03 PM
Parallel.ForEachAsync
این آیتم به شما قابلیت و امکان میدهد application تا معیار برابر سازی را برای شغل های ناهمزمان مجالبندی گردیده در دست گرفتن فرمائید.
var userHandlers = new[]
{
\"users/okyrylchuk\",
\"users/jaredpar\",
\"users/davidfowl\"
};
using HttpClient client = new()
{
BaseAddress = new Uri(\"https://api.github.com\"),
};
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(\"DotNet\", \"6\"));
ParallelOptions options = new()
{
MaxDegreeOfParallelism = 3
};
await Parallel.ForEachAsync(userHandlers, options, async (uri, token) =>
{
var user = await client.GetFromJsonAsync(uri, token);
Console.WriteLine($\"Name: {user.Name}\\nBio: {user.Bio}\\n\");
});
public class GitHubUser
{
public string Name { get; set; }
public string Bio { get; set; }
}
// Output:
// Name: David Fowler
// Bio: Partner Software Architect at Microsoft on the ASP.NET team, Creator of SignalR
//
// Name: Oleg Kyrylchuk
// Bio: Software developer | Dotnet | C# | Azure
//
// Name: Jared Parsons
// Bio: Developer on the C# compiler
()ArgumentNullException.ThrowIfNull
یک بهبود خرد بهتر برای ArgumentNullException انجام شده میباشد. نیازی به پژوهش null در هر مشی پیش از ارسال یک اکسپشن نیست.
ExampleMethod(null);
void ExampleMethod(object param)
{
ArgumentNullException.ThrowIfNull(param);
// Do something
}
PriorityQueue
با یک ساختار داده تازه در NET 6. آشنا گردید. PriorityQueue یک صف حق تقدم دست کم را علامت میدهد. هر عنصر با یک الویت مرتبط در صف قرار میگیرد که ترتیب بیرون شدن از صف را انتخاب مینماید. عنصرها با کمترین شماره آغاز از صف بیرون می شوند.
PriorityQueue priorityQueue = new();
priorityQueue.Enqueue(\"Second\", 2);
priorityQueue.Enqueue(\"Fourth\", 4);
priorityQueue.Enqueue(\"Third 1\", 3);
priorityQueue.Enqueue(\"Third 2\", 3);
priorityQueue.Enqueue(\"First\", 1);
while (priorityQueue.Count > 0)
{
string item = priorityQueue.Dequeue();
Console.WriteLine(item);
}
// Output:
// First
// Second
// Third 2
// Third 1
// Fourth
تلاوت و تایپ کردن فولدر ها
دات نت 6 یک API سطح زیر نو برای قرائت و تایپ کردن فولدر ها فارغ از FileStream معرفی مینماید. یک نوع نو، RandomAccess، یک API ای برای تلاوت و تایپ کردن پوشهها با یک طرز thread-safe ارائه میدهد.
using SafeFileHandle handle = File.OpenHandle(\"file.txt\", access: FileAccess.ReadWrite);
// Write to file
byte[] strBytes = Encoding.UTF8.GetBytes(\"Hello world\");
ReadOnlyMemory buffer1 = new(strBytes);
await RandomAccess.WriteAsync(handle, buffer1, 0);
// Get file length
long length = RandomAccess.GetLength(handle);
// Read from file
Memory buffer2 = new(new byte[length]);
await RandomAccess.ReadAsync(handle, buffer2, 0);
string content = Encoding.UTF8.GetString(buffer2.ToArray());
Console.WriteLine(content); // Hello world
PeriodicTimer تازه
با یک PeriodicTimer به طور کامل ناهمزمان (async) آشنا گردید. به شما این قابلیت و امکان را میدهد تا به صورت ناهمزمان در انتظار تیک های زمانسنج بمانید. PeriodicTimer یک مشی دارااست، WaitForNextTickAsync، که معطل تیک آجل زمان سنج یا این که توقف زمانسنج می ماند.