【问题标题】:What does it mean by "delegate" key word in C# [duplicate]C#中的“委托”关键字是什么意思[重复]
【发布时间】:2019-06-13 07:56:20
【问题描述】:

我正在尝试使用我的 Hololens 拍摄照片,我指的是 C# 中的 Unity 手册。

在手册中,我找到了以下代码sn-p,其中包含关键字“delegate”。我知道“delegate”关键字是用来指代一个函数的。但是在这个代码示例中,我无法理解它是如何工作的。

这个函数中“delegate”关键字的确切用途是什么

PhotoCapture.CreateAsync(false, delegate (PhotoCapture captureObject)
{
    photoCaptureObject = captureObject;
    CameraParameters cameraParameters = new CameraParameters();
    cameraParameters.hologramOpacity = 0.0f;
    cameraParameters.cameraResolutionWidth = cameraResolution.width;
    cameraParameters.cameraResolutionHeight = 
    cameraResolution.height;
    cameraParameters.pixelFormat = CapturePixelFormat.BGRA32;
});

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    PhotoCapture.CreateAsync 方法签名可能如下所示:

    PhotoCapture.CreateAsync(bool b, Action<PhotoCapture> action){
       ...
    }
    

    这意味着您将不会传递普通对象,而是对可以(但不是必须)执行的函数的引用。

    也可以使用 lambda 表达式而不是 'delegate' 关键字来编写调用,如下所示:

    PhotoCapture.CreateAsync(false, captureObject =>
         {
             photoCaptureObject = captureObject;
             CameraParameters cameraParameters = new CameraParameters();
             cameraParameters.hologramOpacity = 0.0f;
             cameraParameters.cameraResolutionWidth = cameraResolution.width;
             cameraParameters.cameraResolutionHeight = 
             cameraResolution.height;
             cameraParameters.pixelFormat = CapturePixelFormat.BGRA32;
    
         });
    

    【讨论】:

      猜你喜欢
      • 2020-10-11
      • 2011-01-15
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 2011-02-14
      • 2010-10-29
      相关资源
      最近更新 更多