как это работает именно в случае с языками по типу Java или C#Это запрятано в библиотечных функциях и программист может не задумываться о том, как оно работает. Вызываете стандартную функцию вывода и она делает всю работу. Примеры:
записать данные в него можно используя API POSIXМожет быть и можно. Но на самом-то деле все используют те же самые библиотечные функции.
/dev/fd/1
string name;
if(entity.Name == null)
{
name = "Name";
}
else
{
name = entity.Name;
}
DataModel dataModel = new DataModel()
{
Id = entity.Id,
Name = name
};
// ...
new DataModel
{
Id = entity.Id,
Name = entity?.Name ?? "Name"
}
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var pwd = "Test1236";
var r = new PasswordChecker(pwd);
;
}
}
public class PasswordChecker
{
private readonly char[] _upper = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', };
private readonly char[] _digit = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
private readonly char[] _special = new char[] { '!', '@', '#', '$', '%', '^', '&', '*', '?', '_', '~' };
private readonly int _strongPasswordLength;
private readonly string _password;
public bool IsLengthOk => _password.Length > _strongPasswordLength;
public bool HasUpper { get; private set; }
public bool HasDigit { get; private set; }
public bool HasSpecial { get; private set; }
public PasswordChecker(string password, int passwordLength=8)
{
_password = password;
_strongPasswordLength = passwordLength;
foreach (var ch in _password)
{
HasUpper = _upper.Any(x => x == ch);
HasDigit = _digit.Any(x => x == ch);
HasSpecial = _special.Any(x => x == ch);
}
}
}
}
Как решить такой трабл явно не приводя массив к нужному типу ?
var classes = objects.Select(ConvertObjectToClass).ToArray();
var classes = objects.Cast<Class>().ToArray();
var classes = System.Runtime.CompilerServices.Unsafe.As<Class[]>(objects);
using System.Runtime.CompilerServices;
var objects = new object[] { new A { x = 1 }, new B { y = 2, z = 3 } };
var something = Unsafe.As<A[]>(objects);
Console.WriteLine(something[0].x); // 1
Console.WriteLine(something[1].x); // 2
var something2 = Unsafe.As<B[]>(objects);
Console.WriteLine($"{something2[0].y} {something2[0].z}"); // 1 0
Console.WriteLine($"{something2[1].y} {something2[1].z}"); // 2 3
class A
{
public int x;
}
class B
{
public int y;
public int z;
}
зачем делать Singleton with double check locking
сказали что lock это одна из самых дешевых оперций по синхронизации.
get { lock (Loker) { // only one check and everything is fine :) if (_instance == null) { _instance = new Singleton1(); } } return _instance; }