Объекты этой структуры будут в неуправляемой памяти, То есть зафиксированы.
var funces = new Fun[];
// Код
GC.KeepAlive(funces);
GC.KeepAlive
(иначе область видимости ограничивается методом, в котором они создались). Примерно так:var (arr, managedObjects) = Create(funces);
// Код
GC.KeepAlive(managedObjects);
GC.TryStartNoGCRegion
/GC.EndNoGCRegion
Самое что непонятное. хоть вопрос на что где когда отправляй, почему то ломается то нет.
Какой функций можно выделить теневые страницы. или страницы физической памяти.
Как вообще можно выделить физическую память, это невозможно же, или что есть какой-то особый malloc new?
Какие функции для работы с гипервизором?
Разве для каждого метода, каждой итерации не новый объект приходит?
[IterationSetup]/[IterationCleanup]
атрибуты надо.public class SampleBenchmark
{
private object _object;
[IterationSetup]
public void MySetup()
{
_object = CreateData(1000);
}
[IterationCleanup]
public void MyCleanUp()
{
_object = null;
}
[Benchmark]
public void Benchmark()
{
_object.DoSomething();
}
}
как вообще можно узнать что пришло, если какой-то гений придумал что в Debug не работает Benchmark, гений
ref
и struct
можно объединить для реализации посетителя, который модифицирует посещаемого объекта и т.к. структура на стеке хранится (неправильно так говорить, но тут сойдет), то можно объект сделать struct а после передавать через ref - боксинга не будет. Так, например, реализован JSON десериализатор в System.Text.Json
- нигде не пишут что так можно делать, просто нашли способ.private
без аргументов, а другой public
с аргументами и тогда можно использовать EF Core, чтобы этот класс использовать и как объект в БД и как объект бизнес-логики. EF Core сам объект создаст и нужные поля выставит.internal set
. А сделать это просто - рефлексия:SomeClass obj = (SomeClass) typeof(SomeClass).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null, Type.EmptyTypes, null).Invoke(null);
internal
get
без set
IsDBNull
- https://learn.microsoft.com/ru-RU/dotnet/api/syste...if (!reader.IsDBNull(14))
ad = reader.GetString(14);
var dict = new Dictionary<MyNullableInt, string>();
dict[null] = "hello, world!";
Console.WriteLine(dict[null]); // Output: hello, world!
struct MyNullableInt: IEquatable<MyNullableInt>, IEquatable<int?>
{
public int? Value { get; set; }
public bool Equals(MyNullableInt other)
{
return other.Value == Value;
}
public bool Equals(int? other)
{
return other == Value;
}
public static implicit operator MyNullableInt(int? value)
{
return new MyNullableInt() {Value = value};
}
public static implicit operator int?(MyNullableInt value)
{
return value.Value;
}
public override bool Equals(object? obj)
{
if (obj is int value)
{
return value == Value;
}
if (obj is MyNullableInt mni)
{
return mni.Value == Value;
}
return false;
}
public override int GetHashCode()
{
return Value.GetHashCode();
}
}
SynchronizedCollection<T>
- это легаси из .NET фреймворка, в современном рантмайме ты его не найдешь.BlockingCollection<T>
Channel<T>
Process.GetCurrentProcess().Threads.Count
и ThreadPool.ThreadCount
while (true)
какой-нибудь)