diff options
| author | Julius Ikkala <julius.ikkala@gmail.com> | 2025-06-28 05:39:24 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-28 02:39:24 +0000 |
| commit | 7349dc5cff49cf22c82eb912813e47f30cd7a757 (patch) | |
| tree | 4d7b3e14f119e7bb48623e52c890b461fd3d9701 /docs/user-guide/06-interfaces-generics.md | |
| parent | a13dda4f214274a10d39f37c79622fc3e62da310 (diff) | |
Minimal optional constraints (#7422)
* Parse optional witness syntax
* Allow failing optional constraint
* Make `is` work with optional constraint
* Allow using optional constraint in checked if statements
* Fix tests
* Make it work with structs
* Fix MSVC build error
* Disallow using `as` with optional constraints
* Update test to match split is/as errors
* Add tests
* Fix uninitialized variables in tests
* Add tests of incorrect uses & fix related bugs
* Mention optional constraints in docs
* format code
* Fix type unification with NoneWitness
* Fix formatting
---------
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Co-authored-by: Nathan V. Morrical <natemorrical@gmail.com>
Diffstat (limited to 'docs/user-guide/06-interfaces-generics.md')
| -rw-r--r-- | docs/user-guide/06-interfaces-generics.md | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/docs/user-guide/06-interfaces-generics.md b/docs/user-guide/06-interfaces-generics.md index bb19fd776..7c957f685 100644 --- a/docs/user-guide/06-interfaces-generics.md +++ b/docs/user-guide/06-interfaces-generics.md @@ -144,6 +144,28 @@ struct MyType<T, U> } ``` +Optional conformances can be expressed compactly using the `where optional` syntax: +```csharp +// Together, these two overloads... +int myGenericMethod<T>(T arg) +{ +} + +int myGenericMethod<T>(T arg) where T: IFoo +{ + arg.myMethod(1.0); +} + +// ... are equivalent to: +int myGenericMethod<T>(T arg) where optional T: IFoo +{ + if (T is IFoo) + { + arg.myMethod(1.0); // OK in a block that checks for T: IFoo conformance. + } +} +``` + Supported Constructs in Interface Definitions ----------------------------------------------------- |
