Пример, приведенный в документации Microsoft для Clipboard.ContainsImage()
, включает следующее:
System.Drawing.Image returnImage = null;
if (Clipboard.ContainsImage())
{
returnImage = Clipboard.GetImage();
....
}
Поверхностное / номинальное поведение этого метода состоит в том, чтобы сначала проверить, содержит ли буфер обмена изображение, и, если да, получить это изображение для использования. Вернуть null
в противном случае.
Однако, возможно ли, что между вызовом ContainsImage()
и вызовом GetImage()
другое приложение изменило содержимое буфера обмена ? В конце концов, возможно, нет никаких данных изображения.
Если в буфере обмена нет изображения, GetImage()
документируется для возврата null
. Хорошо, но тогда какой смысл вначале звонить ContainsImage()
, если при звонке GetImage()
все равно обязательно проверять результат?
Это относится не только к этому примеру - какой смысл использовать вызов ContainsImage()
, если вам действительно нужно содержимое буфера обмена?
Может быть ...
Это более производительно, чем вызов GetImage()
, поэтому его стоит делать, хотя в небольшом% случаев GetImage()
не удастся?
Происходит какое-то магическое блокирование, которое автоматически решает эту проблему (весьма сомнительно)?
Случай, когда ContainsImage()
может быть полезен, может быть, если вам не нужно получать содержимое буфера обмена, просто чтобы посмотреть, являются ли они изображениями.