# IGrainState&lt;T&gt; Properties

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.igrainstate-1/)

## ETag {#etag-9eaf16ad}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.igrainstate-1/properties/etag-9eaf16ad/)

```csharp
public abstract string ETag
```

Gets or sets the ETag that allows optimistic concurrency checks at the storage provider level.

## RecordExists {#recordexists-12e88754}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.igrainstate-1/properties/recordexists-12e88754/)

```csharp
public abstract bool RecordExists
```

Gets or sets a value indicating whether the record exists in storage.

## State {#state-4ebe705a}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.igrainstate-1/properties/state-4ebe705a/)

```csharp
public abstract T State
```

Gets or sets the state.
