По всем вопросам- @notxxx1
Реестр РКН: https://clck.ru/3Fk3kb
#VRHSZ
Post #1344
6.3K
C# @csharp_ci
Showing posts older than #1346 · Back to latest




using System;
class Program {
static void Main() {
int a = 1000;
int b = 1000;
object x = a;
object y = b;
Console.WriteLine(x == y); // #1
Console.WriteLine(x.Equals(y)); // #2
}
}
True
False
True
False
x и y — boxed значения типа int, то есть ссылки на два разных объекта в куче.x == y сравнивает ссылки, а не значения → False.x.Equals(y) вызывает метод Equals для int, который сравнивает значения → True.== и .Equals() при использовании упакованных типов.
public static IEnumerable<int> GetSlowData()
{
Console.WriteLine("Fetching data...");
yield return 1;
Thread.Sleep(1000);
yield return 2;
Thread.Sleep(1000);
yield return 3;
}
public static void ProcessData()
{
// твой код здесь
}


tsqlanalyze -i "C:\scripts\proc.sql" --format
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var actions = new List<Action>();
for (int i = 0; i < 3; i++)
{
actions.Add(() => Console.WriteLine(i));
}
foreach (var action in actions)
action();
}
}
1
2
3
3
0
0
i по ссылке, а не её значение на каждой итерации. После завершения цикла i == 3, и все замыкания ссылаются на одно и то же i. Это классическая ловушка замыканий в C#.



Forwarded from Machinelearning


