SlideShare a Scribd company logo
1 of 69
www.dotnetconf.net
What’s new in C# 8.0
What’s new in C# 8.0
What’s new in C# 8.0
What’s new in C# 8.0
About Me
• Software engineer, consultant and code Jedi
• Software Craftsmanship advocate
• Clean Coder
• Developing Software professionally since 2013
• OzCode Evangelist
@MoaidHathot
https://moaid.codes
moaidh@codevalue.net
https://github.com/moaidhathot
How to try the new features
Install .Net Core 3.0 SDK
Visual Studio 2019
Visual Studio Code
LinqPad 6
RoslynPad 14
Sharplab.io
Jetbrains Rider
null
Nullable in code
https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references
Nullable in Visual Studio
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
</Project>
Nullable in Visual Studio
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Nullable in Visual Studio
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>CS8600;CS8602;CS8603;CS8625</WarningsAsErrors>
</PropertyGroup>
</Project>
Implementation
https://docs.microsoft.com/en-us/dotnet/csharp/nullable-attributes
https://github.com/dotnet/roslyn/blob/master/docs/features/nullable-metadata.md
Adoption
https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/upgrade-to-nullable-references
interface
Motivation
• Enable an API author to add methods to an interface in future versions without breaking source
or binary compatibility.
• Enables C# to interoperate with APIs targeting Android (Java) and iOS (Swift).
• Provides the elements of “traits”.
Allowed modifiers
• Private
• Protected
• Internal
• Public
• Virtual
• Abstract
• Sealed
• Static
• Extern
• partial
Learn more
• C# 8 Feature Documentation
• Language Feature Status
It is your leg
stream
Motivation
• Support async/await in Enumerators
• Pull data asynchronously
Implementation
public interface IEnumerable<T>
{
IEnumerator<T> GetEnumerator();
}
Implementation
public interface IAsyncEnumerable<T>
{
IAsyncEnumerator<T> GetEnumerator(CancellationToken cancellationToken = null)
}
Implementation
public interface IEnumerator<T>
{
T Current { get; }
bool MoveNext();
void Reset();
}
Implementation
public interface IAsyncEnumerator<T> : IAsyncDisposable
{
T Current { get; }
ValueTask<bool> MoveNextAsync();
ValueTask DisposeAsync();
void Reset();
}
Implementation
public interface IDisposable
{
void Dispose();
}
Implementation
public interface IAsyncDisposable
{
ValueTask DisposeAsync();
}
Usage
public IEnumerable<int> GetRandomNumbers(int count)
{
var random = new Random();
for (var index = 0; index < count; ++index)
{
var number = random.Next(500, 4001);
yield return number;
}
}
Usage
public async IAsyncEnumerable<int> GetRandomNumbersAsync(int count)
{
var random = new Random();
for (var index = 0; index < count; ++index)
{
var number = random.Next(500, 4001);
await Task.Delay(number);
yield return number;
}
}
Usage
foreach(var item in GetRandomNumbers(10))
{
item.Dump();
}
Usage
await foreach(var item in GetRandomNumbersAsync(10))
{
item.Dump();
}
Usage
void Test()
{
var foo = new Foo();
foo.Dispose();
}
class Foo : IDisposable
{
public void Dispose()
{
"Disposed".Dump();
}
}
Usage
async Task Test()
{
var foo = new Foo();
await foo.DisposeAsync();
}
class Foo : IAsyncDisposable
{
public async ValueTask DisposeAsync()
{
await Task.Delay(500);
"Disposed".Dump();
}
}
Usage
void Test()
{
using(var foo = new Foo())
{
}
}
class Foo : IDisposable
{
public void Dispose()
{
"Disposed".Dump();
}
}
Usage
async Task Test()
{
await using(var foo = new Foo())
{
}
}
class Foo : IAsyncDisposable
{
public async ValueTask DisposeAsync()
{
await Task.Delay(500);
"Disposed".Dump();
}
}
pattern
History
• C# 7.0 introduced two Pattern matching features
• The ‘is‘ operator
• The switch match expressions
Pattern Matching
• C# 8.0 introduced four Pattern Matching features
• Switch Expressions (as opposed to Statements)
• Property patterns
• Tuple patterns
• Positional patterns
index
Try and guess
array[0]
array[^0]
array[^1]
array[..]
array[0..]
array[..3]
array[0..3]
array[0..^1]
array[0..^0]
array[^3..^1]
array[^3..^0]
array[^1..^2]
array[0..0]
array[..^0]
var array = new[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//1
//IndexOutOfRangeException
//10
//1, 2, 3, 4, 5, 6, 7, 8, 9, 10
//1, 2, 3, 4, 5, 6, 7, 8, 9, 10
//1, 2, 3
//1, 2, 3
//1, 2, 3, 4, 5, 6, 7, 8, 9
//1, 2, 3, 4, 5, 6, 7, 8, 9, 10
//8, 9
//8, 9, 10
//ArgumentOutOfRangeException
//Empty
//1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Try and guess
array[^0]
array[^1]
array[..]
array[0..^1]
array[0..^0]
var array = new[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//array[ array.Length – 0 ]
//array[ array.Length – 1 ]
//array[0] to array[ array.Length ]
//array[0] to array[ array.Length – 1 ]
//array[0] to array [ array.Length]
Implementation
• Indices are implemented using System.Index
• Ranges are implemented using System.Range
Index
public readonly struct Index : IEquatable<Index>
{
public int Value { get; } //Actual index
public bool IsFromEnd { get; }
public Index(int value, bool fromEnd = false)
public static Index Start { get; } //Return new Index(0) – Private API
public static Index End { get; } //Return new Index(-1) – Private API
public int GetOffset(int length);
public static Index FromStart(int value);
public static Index FromEnd(int value);
public static implicit operator Index(int value);
}
Range
public readonly struct Range : IEquatable<Range>
{
public Index Start { get; }
public Index End { get; }
public Range(Index start, Index end);
public static Range All { get; } //Compiler Magic
public static Range StartAt(Index start);
public static Range EndAt(Index start);
public (int offset, int length) GetOffsetAndLength(int length)
Type support
• Both Index and Range
• Array
• String
• Span<T>
• ReadOnlySpan<T>
• Indices only
• List<T>
Implicit support
• The compiler provides implicit support for Index and Range
• Given some conditions
• Using Duck Typing
Countable types
• A type is countable if it has one of the following properties
• Length
• Accessible and returns an int
• Count
• Accessible and returns an int
• If both Count and Length exists, the compiler will use Length
Implicit support for Index
• Conditions
• The type is Countable
• The type has an accessible instance indexer with a single int argument
• The type does not have an accessible instance indexer with Index as the first parameter
• Index must be the only parameter or the remaining parameters must be optional
• What is generated
• For indices of the form n
• It will be translated to Index.GetOffset(n) and used with the available indexer;
• For indices of the form ^n
• It will be translated to Index.GetOffset(obj.Length – n) and used with the available
indexer
Implicit support for Range
• Conditions
• The type is Countable
• The type has an accessible member named Slice accepting two int parameters
• The type does not have an instance indexer with Range as the first parameter
• Range must be the only parameter or the remaining parameters must be optional
• What is generated
• It has more use cases than Index but the result is similar
• The Range will be translated into a call to the Slice member.
Index
void Main()
{
var test = new Test(10);
test[^1].Dump();
test[new Index(4)].Dump();
}
class Test
{
public int Count { get; }
public Test(int maximum)
{
Count = maximum;
}
public int this[int index] => index;
}
Index
void Main()
{
var test = new Test(10);
test[^1].Dump();
test[new Index(4)].Dump();
}
class Test
{
public int Count { get; }
public Test(int maximum)
{
Count = maximum;
}
public IEnumerable<int> Slice(int start, int end) => Enumerable.Range(start, end - start);
}
useful
Using declaration
void Test()
{
using(var foo = new Foo())
{
}
}
class Foo : IDisposable
{
public void Dispose()
{
"Disposed".Dump();
}
}
Using declaration
void Test()
{
using(var foo1 = new Foo())
{
using(var foo2 = new Foo())
{
}
}
}
class Foo : IDisposable
{
public void Dispose()
{
"Disposed".Dump();
}
}
Using declaration
void Test()
{
using var foo = new Foo();
}
class Foo : IDisposable
{
public void Dispose()
{
"Disposed".Dump();
}
}
Using declaration
void Test()
{
using var foo1 = new Foo();
using var foo2 = new Foo();
}
class Foo : IDisposable
{
public void Dispose()
{
"Disposed".Dump();
}
}
Using declaration
async Task Test()
{
await using var foo1 = new Foo();
await using var foo2 = new Foo();
}
class Foo : IDisposable
{
public void Dispose()
{
"Disposed".Dump();
}
}
Using declaration
Foo foo = new Foo();
try
{
foo.Dump();
}
finally
{
if (foo != null)
{
((IDisposable)foo).Dispose();
}
}
Null-coalescing assignment
String str = null;
if(condition)
{
str = “.Net”;
}
…
str = str ?? “C#”;
Null-coalescing assignment
String str = null;
….
str ??= “C#”;
Enhancement of interpolated verbatim strings
Enhancement of interpolated verbatim strings
Starting from C# 8, both of them are allowed
• $@”{value}”
• @$”{value}”
Thank you
@MoaidHathot
https://moaid.codes
moaidh@codevalue.net
https://github.com/moaidhathot
https://github.com/MoaidHathot/.NET-Conf-TLV-2019

More Related Content

What's hot

AOP in Python API design
AOP in Python API designAOP in Python API design
AOP in Python API designmeij200
 
Reflection in Pharo5
Reflection in Pharo5Reflection in Pharo5
Reflection in Pharo5Marcus Denker
 
Monitoring and Alerting with InfluxDB 2.0 | Nate Isley & Deniz Kusefoglu | In...
Monitoring and Alerting with InfluxDB 2.0 | Nate Isley & Deniz Kusefoglu | In...Monitoring and Alerting with InfluxDB 2.0 | Nate Isley & Deniz Kusefoglu | In...
Monitoring and Alerting with InfluxDB 2.0 | Nate Isley & Deniz Kusefoglu | In...InfluxData
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Massimo Bonanni
 
APIdays Paris 2018 - Building scalable, type-safe GraphQL servers from scratc...
APIdays Paris 2018 - Building scalable, type-safe GraphQL servers from scratc...APIdays Paris 2018 - Building scalable, type-safe GraphQL servers from scratc...
APIdays Paris 2018 - Building scalable, type-safe GraphQL servers from scratc...apidays
 
Dynamically Composing Collection Operations through Collection Promises
Dynamically Composing Collection Operations through Collection PromisesDynamically Composing Collection Operations through Collection Promises
Dynamically Composing Collection Operations through Collection PromisesMarcus Denker
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework BasicMario Romano
 
Manage any AWS resources with Terraform 0.12 - April 2020
Manage any AWS resources with Terraform 0.12 - April 2020Manage any AWS resources with Terraform 0.12 - April 2020
Manage any AWS resources with Terraform 0.12 - April 2020Anton Babenko
 
apidays LIVE New York 2021 - Introduction to HATEOAS with Ketting by Evert Po...
apidays LIVE New York 2021 - Introduction to HATEOAS with Ketting by Evert Po...apidays LIVE New York 2021 - Introduction to HATEOAS with Ketting by Evert Po...
apidays LIVE New York 2021 - Introduction to HATEOAS with Ketting by Evert Po...apidays
 
Serverless Architecture - A Gentle Overview
Serverless Architecture - A Gentle OverviewServerless Architecture - A Gentle Overview
Serverless Architecture - A Gentle OverviewCodeOps Technologies LLP
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoopclairvoyantllc
 
Vaugham Hong - Embedding JavaScript V8
Vaugham Hong - Embedding JavaScript V8Vaugham Hong - Embedding JavaScript V8
Vaugham Hong - Embedding JavaScript V8Allen Pike
 
Karate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testingKarate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testingRoman Liubun
 
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at XamarinC# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at XamarinXamarin
 
Legacy Dependency Killer - Utah Code Camp 2014
Legacy Dependency Killer - Utah Code Camp 2014Legacy Dependency Killer - Utah Code Camp 2014
Legacy Dependency Killer - Utah Code Camp 2014dubmun
 
Modern Tools for API Testing, Debugging and Monitoring
Modern Tools for API Testing, Debugging and MonitoringModern Tools for API Testing, Debugging and Monitoring
Modern Tools for API Testing, Debugging and MonitoringNeil Mansilla
 
New in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web FrameworkNew in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web FrameworkVMware Tanzu
 

What's hot (20)

AOP in Python API design
AOP in Python API designAOP in Python API design
AOP in Python API design
 
Angular 2 observables
Angular 2 observablesAngular 2 observables
Angular 2 observables
 
Reflection in Pharo5
Reflection in Pharo5Reflection in Pharo5
Reflection in Pharo5
 
Monitoring and Alerting with InfluxDB 2.0 | Nate Isley & Deniz Kusefoglu | In...
Monitoring and Alerting with InfluxDB 2.0 | Nate Isley & Deniz Kusefoglu | In...Monitoring and Alerting with InfluxDB 2.0 | Nate Isley & Deniz Kusefoglu | In...
Monitoring and Alerting with InfluxDB 2.0 | Nate Isley & Deniz Kusefoglu | In...
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
 
APIdays Paris 2018 - Building scalable, type-safe GraphQL servers from scratc...
APIdays Paris 2018 - Building scalable, type-safe GraphQL servers from scratc...APIdays Paris 2018 - Building scalable, type-safe GraphQL servers from scratc...
APIdays Paris 2018 - Building scalable, type-safe GraphQL servers from scratc...
 
Gohan
GohanGohan
Gohan
 
Dynamically Composing Collection Operations through Collection Promises
Dynamically Composing Collection Operations through Collection PromisesDynamically Composing Collection Operations through Collection Promises
Dynamically Composing Collection Operations through Collection Promises
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework Basic
 
Manage any AWS resources with Terraform 0.12 - April 2020
Manage any AWS resources with Terraform 0.12 - April 2020Manage any AWS resources with Terraform 0.12 - April 2020
Manage any AWS resources with Terraform 0.12 - April 2020
 
apidays LIVE New York 2021 - Introduction to HATEOAS with Ketting by Evert Po...
apidays LIVE New York 2021 - Introduction to HATEOAS with Ketting by Evert Po...apidays LIVE New York 2021 - Introduction to HATEOAS with Ketting by Evert Po...
apidays LIVE New York 2021 - Introduction to HATEOAS with Ketting by Evert Po...
 
Serverless Architecture - A Gentle Overview
Serverless Architecture - A Gentle OverviewServerless Architecture - A Gentle Overview
Serverless Architecture - A Gentle Overview
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
 
Vaugham Hong - Embedding JavaScript V8
Vaugham Hong - Embedding JavaScript V8Vaugham Hong - Embedding JavaScript V8
Vaugham Hong - Embedding JavaScript V8
 
Karate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testingKarate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testing
 
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at XamarinC# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
 
Legacy Dependency Killer - Utah Code Camp 2014
Legacy Dependency Killer - Utah Code Camp 2014Legacy Dependency Killer - Utah Code Camp 2014
Legacy Dependency Killer - Utah Code Camp 2014
 
Modern Tools for API Testing, Debugging and Monitoring
Modern Tools for API Testing, Debugging and MonitoringModern Tools for API Testing, Debugging and Monitoring
Modern Tools for API Testing, Debugging and Monitoring
 
New in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web FrameworkNew in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web Framework
 
C# 6
C# 6C# 6
C# 6
 

Similar to What's new in c# 8.0

What’s new in .NET
What’s new in .NETWhat’s new in .NET
What’s new in .NETDoommaker
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFXHendrik Ebbers
 
ASP.Net 5 and C# 6
ASP.Net 5 and C# 6ASP.Net 5 and C# 6
ASP.Net 5 and C# 6Andy Butland
 
Java 8 - Project Lambda
Java 8 - Project LambdaJava 8 - Project Lambda
Java 8 - Project LambdaRahman USTA
 
C# 7.x What's new and what's coming with C# 8
C# 7.x What's new and what's coming with C# 8C# 7.x What's new and what's coming with C# 8
C# 7.x What's new and what's coming with C# 8Christian Nagel
 
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020Christian Nagel
 
Refactoring In Tdd The Missing Part
Refactoring In Tdd The Missing PartRefactoring In Tdd The Missing Part
Refactoring In Tdd The Missing PartGabriele Lana
 
Renaissance of JUnit - Introduction to JUnit 5
Renaissance of JUnit - Introduction to JUnit 5Renaissance of JUnit - Introduction to JUnit 5
Renaissance of JUnit - Introduction to JUnit 5Jimmy Lu
 
devLink - What's New in C# 4?
devLink - What's New in C# 4?devLink - What's New in C# 4?
devLink - What's New in C# 4?Kevin Pilch
 
Lambda Chops - Recipes for Simpler, More Expressive Code
Lambda Chops - Recipes for Simpler, More Expressive CodeLambda Chops - Recipes for Simpler, More Expressive Code
Lambda Chops - Recipes for Simpler, More Expressive CodeIan Robertson
 
Java 8 - Lambdas and much more
Java 8 - Lambdas and much moreJava 8 - Lambdas and much more
Java 8 - Lambdas and much moreAlin Pandichi
 
New Functional Features of Java 8
New Functional Features of Java 8New Functional Features of Java 8
New Functional Features of Java 8franciscoortin
 
New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8Martin Toshev
 
Whats new in .NET for 2019
Whats new in .NET for 2019Whats new in .NET for 2019
Whats new in .NET for 2019Rory Preddy
 

Similar to What's new in c# 8.0 (20)

Java 8 new features
Java 8 new featuresJava 8 new features
Java 8 new features
 
Java 8 Feature Preview
Java 8 Feature PreviewJava 8 Feature Preview
Java 8 Feature Preview
 
What’s new in .NET
What’s new in .NETWhat’s new in .NET
What’s new in .NET
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFX
 
ASP.Net 5 and C# 6
ASP.Net 5 and C# 6ASP.Net 5 and C# 6
ASP.Net 5 and C# 6
 
Lambdas and Laughs
Lambdas and LaughsLambdas and Laughs
Lambdas and Laughs
 
Java 8 - Project Lambda
Java 8 - Project LambdaJava 8 - Project Lambda
Java 8 - Project Lambda
 
C# 7.x What's new and what's coming with C# 8
C# 7.x What's new and what's coming with C# 8C# 7.x What's new and what's coming with C# 8
C# 7.x What's new and what's coming with C# 8
 
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
 
Next .NET and C#
Next .NET and C#Next .NET and C#
Next .NET and C#
 
Java 8 Intro - Core Features
Java 8 Intro - Core FeaturesJava 8 Intro - Core Features
Java 8 Intro - Core Features
 
Refactoring In Tdd The Missing Part
Refactoring In Tdd The Missing PartRefactoring In Tdd The Missing Part
Refactoring In Tdd The Missing Part
 
Renaissance of JUnit - Introduction to JUnit 5
Renaissance of JUnit - Introduction to JUnit 5Renaissance of JUnit - Introduction to JUnit 5
Renaissance of JUnit - Introduction to JUnit 5
 
devLink - What's New in C# 4?
devLink - What's New in C# 4?devLink - What's New in C# 4?
devLink - What's New in C# 4?
 
Lambda Chops - Recipes for Simpler, More Expressive Code
Lambda Chops - Recipes for Simpler, More Expressive CodeLambda Chops - Recipes for Simpler, More Expressive Code
Lambda Chops - Recipes for Simpler, More Expressive Code
 
Java 8 - Lambdas and much more
Java 8 - Lambdas and much moreJava 8 - Lambdas and much more
Java 8 - Lambdas and much more
 
New Functional Features of Java 8
New Functional Features of Java 8New Functional Features of Java 8
New Functional Features of Java 8
 
New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8
 
Whats new in .NET for 2019
Whats new in .NET for 2019Whats new in .NET for 2019
Whats new in .NET for 2019
 
02basics
02basics02basics
02basics
 

More from Moaid Hathot

Demystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string HandlersDemystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string HandlersMoaid Hathot
 
Azure Bicep for Developers
Azure Bicep for DevelopersAzure Bicep for Developers
Azure Bicep for DevelopersMoaid Hathot
 
Demystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string HandlersDemystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string HandlersMoaid Hathot
 
ChatGPT and Beyond Using AI Tools to Enhance Academic Researc
ChatGPT and Beyond Using AI Tools to Enhance Academic ResearcChatGPT and Beyond Using AI Tools to Enhance Academic Researc
ChatGPT and Beyond Using AI Tools to Enhance Academic ResearcMoaid Hathot
 
Dapr- Distributed Application Runtime
Dapr- Distributed Application RuntimeDapr- Distributed Application Runtime
Dapr- Distributed Application RuntimeMoaid Hathot
 
What's coming in C# 11
What's coming in C# 11What's coming in C# 11
What's coming in C# 11Moaid Hathot
 
Introduction to .NET MAUI
Introduction to .NET MAUIIntroduction to .NET MAUI
Introduction to .NET MAUIMoaid Hathot
 
What's new in C# 11
What's new in C# 11What's new in C# 11
What's new in C# 11Moaid Hathot
 
Best of build 2021 - C# 10 & .NET 6
Best of build 2021 -  C# 10 & .NET 6Best of build 2021 -  C# 10 & .NET 6
Best of build 2021 - C# 10 & .NET 6Moaid Hathot
 
What's new in c# 10
What's new in c# 10What's new in c# 10
What's new in c# 10Moaid Hathot
 
Developer cloud roadmap keynote
Developer cloud roadmap keynoteDeveloper cloud roadmap keynote
Developer cloud roadmap keynoteMoaid Hathot
 
What's new in c# 10
What's new in c# 10What's new in c# 10
What's new in c# 10Moaid Hathot
 
Intro to Azure Static Web Apps
Intro to Azure Static Web AppsIntro to Azure Static Web Apps
Intro to Azure Static Web AppsMoaid Hathot
 
About me - Rothschild Partnerships
About me - Rothschild PartnershipsAbout me - Rothschild Partnerships
About me - Rothschild PartnershipsMoaid Hathot
 
What's coming in c# 9.0
What's coming in c# 9.0What's coming in c# 9.0
What's coming in c# 9.0Moaid Hathot
 
What's Coming in C# 9.0
What's Coming in C# 9.0What's Coming in C# 9.0
What's Coming in C# 9.0Moaid Hathot
 
Introduction to azure
Introduction to azureIntroduction to azure
Introduction to azureMoaid Hathot
 
Distributed Application Runtime (Dapr) - Azure Israel 2020
Distributed Application Runtime (Dapr) - Azure Israel 2020Distributed Application Runtime (Dapr) - Azure Israel 2020
Distributed Application Runtime (Dapr) - Azure Israel 2020Moaid Hathot
 
Dapr: distributed application runtime
Dapr: distributed application runtimeDapr: distributed application runtime
Dapr: distributed application runtimeMoaid Hathot
 

More from Moaid Hathot (20)

Demystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string HandlersDemystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string Handlers
 
Azure Bicep for Developers
Azure Bicep for DevelopersAzure Bicep for Developers
Azure Bicep for Developers
 
Demystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string HandlersDemystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string Handlers
 
ChatGPT and Beyond Using AI Tools to Enhance Academic Researc
ChatGPT and Beyond Using AI Tools to Enhance Academic ResearcChatGPT and Beyond Using AI Tools to Enhance Academic Researc
ChatGPT and Beyond Using AI Tools to Enhance Academic Researc
 
Dapr- Distributed Application Runtime
Dapr- Distributed Application RuntimeDapr- Distributed Application Runtime
Dapr- Distributed Application Runtime
 
What's coming in C# 11
What's coming in C# 11What's coming in C# 11
What's coming in C# 11
 
Introduction to .NET MAUI
Introduction to .NET MAUIIntroduction to .NET MAUI
Introduction to .NET MAUI
 
What's new in C# 11
What's new in C# 11What's new in C# 11
What's new in C# 11
 
Best of build 2021 - C# 10 & .NET 6
Best of build 2021 -  C# 10 & .NET 6Best of build 2021 -  C# 10 & .NET 6
Best of build 2021 - C# 10 & .NET 6
 
What's new in c# 10
What's new in c# 10What's new in c# 10
What's new in c# 10
 
Developer cloud roadmap keynote
Developer cloud roadmap keynoteDeveloper cloud roadmap keynote
Developer cloud roadmap keynote
 
What's new in c# 10
What's new in c# 10What's new in c# 10
What's new in c# 10
 
Intro to Azure Static Web Apps
Intro to Azure Static Web AppsIntro to Azure Static Web Apps
Intro to Azure Static Web Apps
 
About me - Atidna
About me - AtidnaAbout me - Atidna
About me - Atidna
 
About me - Rothschild Partnerships
About me - Rothschild PartnershipsAbout me - Rothschild Partnerships
About me - Rothschild Partnerships
 
What's coming in c# 9.0
What's coming in c# 9.0What's coming in c# 9.0
What's coming in c# 9.0
 
What's Coming in C# 9.0
What's Coming in C# 9.0What's Coming in C# 9.0
What's Coming in C# 9.0
 
Introduction to azure
Introduction to azureIntroduction to azure
Introduction to azure
 
Distributed Application Runtime (Dapr) - Azure Israel 2020
Distributed Application Runtime (Dapr) - Azure Israel 2020Distributed Application Runtime (Dapr) - Azure Israel 2020
Distributed Application Runtime (Dapr) - Azure Israel 2020
 
Dapr: distributed application runtime
Dapr: distributed application runtimeDapr: distributed application runtime
Dapr: distributed application runtime
 

Recently uploaded

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 

Recently uploaded (20)

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 

What's new in c# 8.0