unity3d find y position on navmesh

C#
private bool SetDestination(Vector3 targetDestination)
{
  NavMeshHit hit;
  if (NavMesh.SamplePosition(targetDestination, out hit, 1f, NavMesh.AllAreas))
  {
    agent.SetDestination(hit.position);
    return true;
  }
  return false;
}
Source

Also in C#: