C# 11 will introduce features like parameter null checking, list patterns, static abstracts in interfaces and the field keyword . Use this tag if your question specifically pertains to C# 11 specific features. The C# tag should be used if your question is not specific to C# 11 features.
Questions tagged [c#-11.0]
68 questions
                    
                    82
                    
            votes
                
                3 answers
            
        What is double exclamation mark in C#?
From https://source.dot.net/#System.Private.CoreLib/Hashtable.cs,475:
public virtual bool ContainsKey(object key!!)
It looks like two null-forgiving operators. Is there a document about it?
         
    
    
        shingo
        
- 18,436
- 5
- 23
- 42
                    16
                    
            votes
                
                1 answer
            
        What is the purpose of the 'scoped' keyword
While looking at the source code of the new DefaultInterpolatedStringHandler I noticed that the ReadOnlySpan was annotated with the scoped keyword. The only documentation I could find was here. However, I wasn't able to figure what the practical…
         
    
    
        Twenty
        
- 5,234
- 4
- 32
- 67
                    9
                    
            votes
                
                3 answers
            
        EF Core model classes: Use C# 11 `required` modifier on all properties, even on value type properties?
When using the nullable-enable feature in Entity Framework Core model classes, the compiler will emit a lot of CS8618 warning like that:
warning CS8618: Non-nullable property 'Title' must contain a non-null value when exiting constructor. Consider…
         
    
    
        eikuh
        
- 673
- 1
- 9
- 18
                    8
                    
            votes
                
                1 answer
            
        CA1062 is thrown after updating to !! parameter null checking
According to CA1062 null checks are required in externally visible methods like this:
public static double GetLongitude(this Location location)
{
    if(location is null)
    {
        throw new ArgumentNullException(nameof(location));
    }
   …
         
    
    
        Matthias Fuglsang-Damgaard
        
- 303
- 2
- 15
                    6
                    
            votes
                
                2 answers
            
        C# 11 escape rules for ref parameters: ref int vs Span
        Why does the following code not compile in C# 11?
// Example 1 - fails
class C {
    public Span M(ref int arg) {
        Span span;
        span = new Span(ref arg);
        return span;
    }
}
It produces two compile…   
         
    
    
        Bartosz
        
- 461
- 2
- 9
                    5
                    
            votes
                
                2 answers
            
        Write other C# code in an interpolated string?
In C# 11 we can now include newlines in an interpolated string. So we can write code like this:
    string pageTitle = "";
    string header = $"Header: {
      pageTitle switch
      {
        "" => "No title",
        _ => pageTitle
      }}";
Is…
         
    
    
        DeborahK
        
- 57,520
- 12
- 104
- 129
                    5
                    
            votes
                
                1 answer
            
        Is it possible to auto-implement IEquatable and IComparable in C# 11?  
        When writing C#, I tend to write a lot of value type objects that implement IEquatable, IComparable, or both.
For the sake of this proposal, let's assume that I'm writing a fictitious struct called Int256 with equatable and comparable value…  
         
    
    
        Matthew Layton
        
- 39,871
- 52
- 185
- 313
                    5
                    
            votes
                
                1 answer
            
        Generic math how to cast from INumber to a "concrete" type (int/double/etc)
Suppose we have a generic method which accepts INumber and returns int:
// process val and return as int
static int DoSomething(T val) where T : INumber => ... 
How can the T be casted to int.
   
         
    
    
        Guru Stron
        
- 102,774
- 10
- 95
- 132
                    5
                    
            votes
                
                1 answer
            
        C# 11 - What have we gained by adding IAdditionOperators to this method?
I just upgraded Visual Studio 2022 to .NET7, which includes C# 11. I am interested in trying out the new static abstract interface methods, and so followed the tutorial there.
The article shows how to define Point and Translation records that use…
         
    
    
        Avrohom Yisroel
        
- 8,555
- 8
- 50
- 106
                    5
                    
            votes
                
                2 answers
            
        Why am I getting warnings that analysers are not found?
I created a toy project for checking out the latest .NET 7 (preview-5) and the regex code generation. It worked great, so I applied the same changes to an existing project (not for production, but for personal productivity). For some reason, I’m…
         
    
    
        Quirin F. Schroll
        
- 1,302
- 1
- 11
- 25
                    4
                    
            votes
                
                1 answer
            
        Required init property with backing field gives null warning C# 11
Having a required init property which sets a backing field still gives a null warning.
The below code gives a warning:
Warning   CS8618  Non-nullable field '_name' must contain a non-null value when exiting constructor. Consider declaring the field…
         
    
    
        Joas
        
- 1,796
- 1
- 12
- 25
                    4
                    
            votes
                
                1 answer
            
        C# 11 - detect required property by reflection
C# 11 added support for required properties.
public class Example
{
    public required string Value { get; set; }
}
How do I detect that the property is declared as required by reflection?
Please note this is a different question from Return a…
         
    
    
        Mirek
        
- 4,013
- 2
- 32
- 47
                    3
                    
            votes
                
                1 answer
            
        Using Numeric literals/constants in Generic Math C# 11
I am working with the new Generic Math System in C# 11, which is cool, but I haven't found a way to use numeric literals or mathematical constants with them.
The following example which calculates the circumference of a circle does not work.
public…
         
    
    
        paulmattern
        
- 33
- 3
                    3
                    
            votes
                
                1 answer
            
        Alternative to the new C# 11 `required` modifier in C# 10 and earlier
.NET 7 and C# 11 introduce a new modifier required. Documentation says:
The required modifier indicates that the field or property it's
applied to must be initialized by all constructors or by using an
object initializer. Any expression that…
         
    
    
        bahrep
        
- 29,961
- 12
- 103
- 150
                    3
                    
            votes
                
                3 answers
            
        Can I set SetsRequiredMembers or another attribute for only one member in C# 11?
Consider the following code:
public record Foo 
{
  public required string A { get; init; }
  public required string B { get; init; }
}
public record Bar : Foo
{
   public Bar()
   {
     A = "TEST";
   }
}
var bar = new Bar
{
  B = "ANOTHER…
         
    
    
        Ilya Chernomordik
        
- 27,817
- 27
- 121
- 207