# Unit

> [`Tango.Types.Unit`](https://github.com/gabrielschade/Tango/blob/master/Tango/Tango/Types/Unit.cs)

The unit type is a type that indicates the absence of a specific value. The `Unit` type has only a single value, which acts as a placeholder when no other value exists or is needed.

The unit type resembles the void type in languages such as C# and C++. The value of the unit type is often used to hold the place where a value is required by the language syntax, but when no value is needed or desired, like in casts from action to functions that needs to return a value.

The concept behind this type can be find in the section: [Fundamentals > From void to Unit](https://github.com/gabrielschade/tango/tree/379cc4a38ae47796971eb875ec66e7dc053a9081/Concepts/From%20void%20to%20Unitv.html).

## Usage

You can create a Unit value normally like any struct.

```csharp
Unit unit = new Unit();
```

This struct have no properties or methods besides the shared operations presents in all structures: `Equals`, `GetHashCode`, `GetType` e `ToString`.

### Casts between `Action` and `Func`

Some high order functions needs a `Func` delegate in its parameters, it's is possible to create this delegate from an `Action` function by using [`ToFunction`](https://github.com/gabrielschade/tango/tree/379cc4a38ae47796971eb875ec66e7dc053a9081/Functional/FunctionExtensions.html).

Originally an `Action` delegate doesn't returns anything, because it has a `void` type as returns. At this point, **Tango** uses the `Unit` type to create a new function that doesn't return anything and can be represented by `Func` delegate as well.

The fundamentals about `Func` and `Action` can be find in [Fundamentals > Function and Action](https://github.com/gabrielschade/tango/tree/379cc4a38ae47796971eb875ec66e7dc053a9081/Concepts/Function%20and%20Action.html) section.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gabriel-schade-cardoso.gitbook.io/tango/types/unit.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
