SlideShare a Scribd company logo
w w w. l a m b d a 3 . c o m . b r
Novidades do C# 7 e 8
Giovanni Bassi
• Programador
• Microsoft MVP
• Não gerente
• blog.lambda3.com.br, podcast.lambda3.com.br,
dotnetarchitects.net, nodebr, dockersp
@giovannibassi
/giggio.tech
• Escalador e ciclista
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
podcast.lambda3.com.br
0 – Eventos
1 – Docker
2 – .NET Core RC2
3 – Git
4 – Estudo
5 – Open Source
6 – Xamarin
7 – Node.js
8 – Democracia organizacional
9 – O programador poliglota
...
Toda semana em:

Recommended for you

Function basics
Function basicsFunction basics
Function basics

This document discusses functions in C programming. It begins by asking questions about functions and their syntax and benefits. It then provides examples of built-in library functions like sqrt, pow, and isupper. The document demonstrates how to write user-defined functions with a factorial function as an example. It also provides examples using functions like calculating factorials, binomial coefficients, GCD, prime checking, and printing prime numbers within a range.

gcd and lcmprimec function
Pads lab manual final
Pads lab manual finalPads lab manual final
Pads lab manual final

The document contains examples demonstrating various object-oriented programming concepts in C++ including constructors, destructors, inheritance, polymorphism, operator overloading, templates, and more. Each example includes the code for a concept, the output of running the code, and a brief description.

C++ assignment
C++ assignmentC++ assignment
C++ assignment

The document contains 26 C++ programs demonstrating basic programming concepts like variables, data types, input/output functions, conditional statements, loops, functions, arrays etc. The programs include calculations like addition, subtraction, cube, area of shapes, temperature conversion, tables, averages and patterns using for/while loops. Logical and relational operators as well as increment operators are also covered. The programs help learn and practice fundamental C++ programming.

TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
Acreditamos que a diversidade, em
suas diversas expressões, deve ser
respeitada e valorizada, e que uma
sociedade mais diversa é uma
sociedade melhor.
diversidade.tech
bit.ly/novidadescsharp7
Agenda

Recommended for you

Practical File of C Language
Practical File of C LanguagePractical File of C Language
Practical File of C Language

The document contains 34 code snippets showing C programming examples using arrays, loops, functions, conditional statements, and other basic programming concepts. The code snippets demonstrate how to: 1) Print messages, take user input, perform basic math operations like addition and averaging numbers 2) Check conditions like even/odd, positive/negative, leap year 3) Use different loops like while, for, do-while to iterate 4) Define and call functions to modularize code for swapping, factorial, Fibonacci series etc. 5) Use one-dimensional arrays to store and process data

Data Structures Practical File
Data Structures Practical File Data Structures Practical File
Data Structures Practical File

The document describes programs to implement various operations on singly linked lists including insertion, deletion, counting nodes, creating a list, traversing a list, and copying a list. It provides functions for insertion at the beginning, end, and before/after a given node. Deletion functions remove from the beginning, end, or by item value. Counting returns the total nodes or occurrences of a value. Traversal and copying print or duplicate the list.

Implementing string
Implementing stringImplementing string
Implementing string

The document provides code examples demonstrating different C++ algorithms and string handling techniques using a custom MyString class. It shows how to define constructors, destructors, copy constructors, operator overloading for operators like += and ==, and friend functions for input/output streaming to implement basic string functionality. The examples also demonstrate handling memory allocation and deallocation correctly to avoid leaks. Overall, the document serves as a tutorial for implementing a simple string class in C++.

stringc++
Evolução do C#
Código gerenciado
Generics
Language Integrated Query
Dinamismo + paridade nas linguagens
C# 5 + VB 11
Programação assíncrona
C# 1 + VB 7
C# 2 + VB 8
C# 3 + VB 9
C# 4 + VB 10
C# 6 + VB 14
Roslyn
Código gerenciado
Generics
Language Integrated Query
Dinamismo + paridade nas linguagens
C# 5 + VB 11
Programação assíncrona
C# 1 + VB 7
C# 2 + VB 8
C# 3 + VB 9
C# 4 + VB 10
C# 6 + VB 14
Roslyn
C# 7 + VB 15
Features!
Código gerenciado
Generics
Language Integrated Query
Dinamismo + paridade nas linguagens
C# 5 + VB 11
Programação assíncrona
C# 1 + VB 7
C# 2 + VB 8
C# 3 + VB 9
C# 4 + VB 10
C# 6 + VB 14
Roslyn
C# 7 + VB 15
Features! Features! Features!Features!

Recommended for you

เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™
เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™
เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™

1. The document discusses basic C programming concepts like data types, variables, functions, input/output operations, and strings. 2. It explains how to declare and initialize variables, write main functions, use header files, and call functions like printf(), scanf(), putchar(), getchar(), gets(), and puts(). 3. Examples are provided to demonstrate how to print output, take user input, manipulate variables in expressions, and work with characters and strings.

การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)
การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)
การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)

1. The document discusses basic C programming concepts like data types, variables, functions, header files, and input/output functions. 2. It explains how a C source code file is compiled and linked to create an executable file. Key functions covered include printf() for output and scanf() for input. 3. The text also reviews common input and output functions like putchar(), getchar(), gets(), and puts() illustrating their use with examples. It demonstrates how characters and strings can be read from keyboard and displayed on screen in C programs.

Why you should be using structured logs
Why you should be using structured logsWhy you should be using structured logs
Why you should be using structured logs

Structured logs provide more context and are easier to analyze than traditional logs. This document discusses why one should use structured logs and how to implement structured logging in Python. Key points include: - Structured logs add context like metadata, payloads and stack traces to log messages. This makes logs more searchable, reusable and easier to debug. - Benefits of structured logs include easier developer onboarding, improved debugging and monitoring, and the ability to join logs from different systems. - Python's logging module can be used to implement structured logging. This involves customizing the LogRecord and Formatter classes to output log messages as JSON strings. - Considerations for structured logs include potential performance impacts from serialization

structured logsloggingjson
Código gerenciado
Generics
Language Integrated Query
Dinamismo + paridade nas linguagens
C# 5 + VB 11
Programação assíncrona
C# 1 + VB 7
C# 2 + VB 8
C# 3 + VB 9
C# 4 + VB 10
C# 6 + VB 14
Roslyn
C# 7 + VB 15
Features! Features! Features!
Features (parte 2)?
C# 8 + VB 16?
https://insights.stackoverflow.com/survey/2018/#most-popular-technologies
https://insights.stackoverflow.com/survey/2018/#most-popular-technologies
F#
10,000’s
Tens of thousands
VB
100,000’s
Hundreds of thousands
C#
1,000,000’s
Millions

Recommended for you

C++ file
C++ fileC++ file
C++ file

This document contains 17 programming problems and their solutions involving object oriented programming concepts like classes, objects, functions, arrays, pointers etc. The problems cover basic concepts like calculating factorial, checking prime number, Fibonacci series, arithmetic operations using menus. More advanced concepts covered include sorting, searching, function overloading, complex numbers, class/object concepts like constructors, destructors and member functions to maintain student records.

C++ Question on References and Function Overloading
C++ Question on References and Function OverloadingC++ Question on References and Function Overloading
C++ Question on References and Function Overloading

This presentation will help you to understand the concepts of References , pointer , function overloading and Memory Leakage

function overloadingoperator newreference variables
Pattern printing-in-c(Jaydip Kikani)
Pattern printing-in-c(Jaydip Kikani)Pattern printing-in-c(Jaydip Kikani)
Pattern printing-in-c(Jaydip Kikani)

simple pattern printing programme in c language for beginners. here you can see code with its pattern programme and easily can understand the programme.

pattern in cpatternc pattern
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
System.ValueTuple
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
C# 7.0

Recommended for you

C basics
C basicsC basics
C basics

The document contains 20 programs demonstrating various C programming concepts like data types, operators, control structures, functions, arrays, structures, pointers and data structures. Program 1 shows the use of arithmetic operators to add two numbers. Program 2 demonstrates logical operators in an if-else statement to find the greatest of three numbers. Program 3 uses relational operators in an if-else statement to check if a number is even or odd.

c progams
systems programming lab programs in c
systems programming lab programs in csystems programming lab programs in c
systems programming lab programs in c

This document contains code for a direct linking loader in two passes. The first pass loader reads the input file, stores the section information in a table, and generates an output file with the section table. The second pass loader reads the section table, resolves symbol references, and generates an executable file with the linked object code and resolved addresses. It opens input files, reads section headers, symbols and addresses, resolves symbols, and writes linked output to files at specified memory locations.

Stl algorithm-Basic types
Stl algorithm-Basic typesStl algorithm-Basic types
Stl algorithm-Basic types

The document discusses various C++ algorithms like swap, max, min, sort, find, binary_search, count, copy, fill, count_if, remove, for_each and their usage with examples. It explains what each algorithm does, its prototype and shows code snippets to demonstrate how it can be used.

stlc++algorithm
public static int DiceSum(IEnumerable<object> values)
{
var sum = 0;
foreach (var item in values)
{
if (item is int val)
sum += val;
else if (item is IEnumerable<object> subList)
sum += DiceSum(subList);
}
return sum;
}
https://docs.microsoft.com/dotnet/csharp/pattern-matching
http://bit.ly/cspatternmatching
https://docs.microsoft.com/dotnet/csharp/pattern-matching
public static int DiceSum(IEnumerable<object> values)
{
var sum = 0;
foreach (var item in values)
{
switch (item)
{
}
}
return sum;
}
http://bit.ly/cspatternmatching
case 0:
break;
case int val:
sum += val;
break;
case PercentileDie die:
sum += die.Multiplier * die.Value;
break;
https://docs.microsoft.com/dotnet/csharp/pattern-matching
public static int DiceSum(IEnumerable<object> values)
{
var sum = 0;
foreach (var item in values)
{
switch (item)
{
}
}
return sum;
}
http://bit.ly/cspatternmatching
case 0:
break;
case int val:
sum += val;
break;
case PercentileDie die:
sum += die.Multiplier * die.Value;
break;
https://docs.microsoft.com/dotnet/csharp/pattern-matching
case IEnumerable<object> subList when subList.Any():
sum += DiceSum(subList);
break;
case IEnumerable<object> subList:
break;
case null:
break;
default:
throw new InvalidOperationException("unknown");
public static int DiceSum(IEnumerable<object> values)
{
var sum = 0;
foreach (var item in values)
{
switch (item)
{
}
}
return sum;
}
http://bit.ly/cspatternmatching

Recommended for you

C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8

The document discusses new features introduced in C# 7 and C# 7.1-7.2, including tuples, pattern matching, out variables, discards, numeric literals, local functions, generalized async return types, inferred tuple element names, default literals, async Main method, non-trailing named arguments, and leading separators for numeric literals. It provides links to Microsoft documentation and proposals for each new feature.

csharpc#c#8
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#

A presentation of the .NET Foundation, followed with a description of future versions of .NET, C#6 features, and possible C#7 features.

c#.net.net foundation
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp

This document discusses object-oriented principles and design best practices in C++. It begins with an overview of OOP concepts like inheritance vs composition and templates vs inheritance. It then covers the SOLID principles and design patterns. The document emphasizes best practices like favoring composition over inheritance, avoiding virtual calls from constructors, preventing confusing overloads, and following safe overriding to prevent versioning problems. Overall it provides guidance on applying OOP principles and avoiding common pitfalls in C++ design.

object orienteddesignsoftware design
var numbers1 = (1, 2);
var objs = ("1", 2);
WriteLine($"{numbers1.Item1}, {numbers1.Item2}");
(int one, int two) numbers2 = (1, 2);
WriteLine($"{numbers2.Item1}, {numbers2.Item2}");
WriteLine($"{numbers2.one}, {numbers2.two}");
var numbers3 = (one: 1, two: 2);
WriteLine($"{numbers3.one}, {numbers3.two}");
(int uno, int due) numbers4 = (one: 1, two: 2);
WriteLine($"{numbers4.uno}, {numbers4.due}");
// WriteLine($"{numbers4.one}, {numbers4.two}"); // error
https://docs.microsoft.com/dotnet/csharp/tuples
http://bit.ly/cstuplas
void M()
{
var (name, company) = Person.Get();
WriteLine($"{name}, {company}");
}
class Person
{
public string Name { get; set; }
public string Company { get; set; }
public void Deconstruct(out string name, out string company)
{
name = Name;
company = Company;
}
public static Person Get() => new Person { Name = "…", Company = "…" };
} https://docs.microsoft.com/dotnet/csharp/tupleshttp://bit.ly/cstuplas
var numbers = (one: 1, two: 2);
var (uno, due) = numbers;
WriteLine($"{uno}, {due}");
https://docs.microsoft.com/dotnet/csharp/tuples
http://bit.ly/cstuplas
if (int.TryParse("1", out int result))
WriteLine(result);
if (int.TryParse("1", out var result2))
WriteLine(result2);
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#out-variables
http://bit.ly/csoutvars

Recommended for you

All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2go

This document discusses using the C to Go translation tool c2go to translate C code implementing quicksort algorithms into Go code. It provides examples of translating simple quicksort C code, improving the translation by using a configuration file, and how c2go handles standard C functions like qsort by translating them to their Go equivalents. The examples demonstrate how c2go can generate valid Go code from C code but may require some manual fixes or configuration to handle certain data structures or language differences.

golang go c2go
Design Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on ExamplesDesign Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on Examples

This presentation takes a case-study based approach to design patterns. A purposefully simplified example of expression trees is used to explain how different design patterns can be used in practice. Examples are in C#, but is relevant for anyone who is from object oriented background.

programmingdesign patternssoftware design
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDB

The document provides an overview of a webinar on transitioning from SQL to MongoDB. It introduces the presenter Buzz Moschetti and his background. It then discusses how developers currently spend their time integrating with different components and systems like databases, and how the mismatch between data at the business level versus the database level has been a long-standing problem. The document uses examples to show how MongoDB can help by allowing richer data structures and a more direct match between data in code and the database.

(int x, int y) GetCoordinates() => (1, 2);
var (_, y) = GetCoordinates();
https://docs.microsoft.com/dotnet/csharp/discards
http://bit.ly/csdiscards
void ObjectDeconstruction()
{
var (name, _) = Person.Get();
}
https://docs.microsoft.com/dotnet/csharp/discards
http://bit.ly/csdiscards
if (int.TryParse("1", out _))
WriteLine("It is a number!");
https://docs.microsoft.com/dotnet/csharp/discards
http://bit.ly/csdiscards
object o = 1;
if (o is Person p)
WriteLine(p.Company);
else if (o is null)
WriteLine("null");
else if (o is var _)
WriteLine("Unknown");
https://docs.microsoft.com/dotnet/csharp/discards
http://bit.ly/csdiscards

Recommended for you

mobl
moblmobl
mobl

The document discusses the mobl programming language for building mobile web applications. Mobl is a statically-typed language that compiles to HTML and JavaScript. It aims to provide features for building reactive user interfaces and uses techniques like continuation-passing style and observables to support asynchronous programming in a synchronous-looking way. The document provides examples of coding common mobile app patterns like data binding, network requests, and user input handling in mobl.

mobile development software dsl
C++ manual Report Full
C++ manual Report FullC++ manual Report Full
C++ manual Report Full

Create the equivalent of a four function calculator. The program should request the user to enter a number, an operator, and another number. carry out the specified arithmetical operation: adding, subtracting, multiplying, or dividing the two numbers. (Using switch statement ).ThesisScientist.com

c++ manualthesis scientistc manual
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...

Type systems are not just syntax checkers, but are intended to prevent execution errors by catching type errors. Static typing catches errors at compile-time rather than run-time, as demonstrated by examples in Ruby and C#. While static typing can seem bureaucratic in some languages, it enables type inference and other "smart" features in languages like Haskell. Both static and dynamic typing are flexible depending on the language, as dynamic languages allow for eval and meta-programming while static languages have reflection and templates. Overall, typing influences language design and tools but flexible features depend more on the language's meta-model, while static languages can feel bureaucratic due to historical reasons rather than limitations of the typing model.

haskelltypesystemsc
ref int Find(int[,] matrix, Func<int, bool> predicate)
{
for (int i = 0; i < matrix.GetLength(0); i++)
for (int j = 0; j < matrix.GetLength(1); j++)
if (predicate(matrix[i, j]))
return ref matrix[i, j];
throw new InvalidOperationException("Not found");
}
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#ref-locals-and-returns
http://bit.ly/csreflocals
void M()
{
var matrix = new [,] { { 1, 2, 3, 4, 5 },
{ 6, 7, 8, 42, 10 } };
ref var item = ref Find(matrix, val => val == 42);
WriteLine(item);
item = 24;
WriteLine(matrix[1, 3]);
}
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#ref-locals-and-returns
http://bit.ly/csreflocals
public ExpressionBodiedMembers(string name) => Name = name;
~ExpressionBodiedMembers() => WriteLine("Finalized!");
private string name;
public string Name
{
get => name;
set => name = value;
}
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#more-expression-bodied-members
http://bit.ly/csmaisebm
private string a = GetA() ?? throw new Exception();
private static string GetA() => throw new Exception();
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#throw-expressions
http://bit.ly/csexpthrow

Recommended for you

Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»

This document summarizes new syntactic features introduced in recent versions of C#, including C# 6.0, 7.0, and 7.1. It provides examples of properties with auto-properties and initializers, lambda expressions used in properties and methods, inline variables, null expressions with null-coalescing and null-conditional operators, throw expressions, local functions, value tuples, and pattern matching. It also briefly mentions features planned for future versions like C# 7.2, 8, and beyond such as read-only references, nullable reference types, and default interface methods.

The First C# Project Analyzed
The First C# Project AnalyzedThe First C# Project Analyzed
The First C# Project Analyzed

The PVS-Studio team is now actively developing a static analyzer for C# code. The first version is expected by the end of 2015. And for now my task is to write a few articles to attract C# programmers' attention to our tool in advance. I've got an updated installer today, so we can now install PVS-Studio with C#-support enabled and even analyze some source code. Without further hesitation, I decided to scan whichever program I had at hand. This happened to be the Umbraco project. Of course we can't expect too much of the current version of the analyzer, but its functionality has been enough to allow me to write this small article.

pvs-studioc#
Visual studio 2008
Visual studio 2008Visual studio 2008
Visual studio 2008

Visual Studio 2008 provides support for multi-targeting applications, occasionally connected systems, Office applications, client applications, Windows Communication Foundation, ASP.NET web applications, and C# 3.0 and LINQ. It also includes ADO.NET Sync Services, support for WPF, WCF, and LINQ in applications. New features in Visual Studio 2008 improve developer productivity and the development of Windows, web, database, and .NET applications.

int sixteen = 0b0001_0000;
int thirtyTwo = 0b0010_0000;
int sixtyFour = 0b0100_0000;
int oneHundredTwentyEight = 0b1000_0000;
long oneHundredBillions = 100_000_000_000;
double AvogadroConstant = 6.022_140_857_747_474e23;
decimal GoldenRatio = 1.618_033_988_749M;
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#numeric-literal-syntax-improvements
http://bit.ly/csnumlit
double Average(IEnumerable<int> ns)
{
double Divide(double a, double b)
{
if (b == 0) throw new DivideByZeroException();
return a / b;
}
var sum = ns.Sum();
return Divide(sum, ns.Count());
}
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#local-functions
http://bit.ly/cslocalfunc
void Add1AndSumAll(int[] ms)
{
IEnumerable<int> Sum1(IEnumerable<int> ns)
{
foreach (var n in ns)
yield return n + 1;
}
if (ms == null) throw new NullReferenceException();
WriteLine(Sum1(ms).Sum());
}
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#local-functions
http://bit.ly/cslocalfunc
public async ValueTask<int> Get5()
{
await Task.Delay(100);
return 5;
}
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#generalized-async-return-types
http://bit.ly/csasyncgeneral

Recommended for you

"Optimization of a .NET application- is it simple ! / ?", Yevhen Tatarynov
"Optimization of a .NET application- is it simple ! / ?",  Yevhen Tatarynov"Optimization of a .NET application- is it simple ! / ?",  Yevhen Tatarynov
"Optimization of a .NET application- is it simple ! / ?", Yevhen Tatarynov

Optimization of .NET application seems complex and tied full task, but don’t hurry up with conclusions. Let’s look on several cases from real projects. For this we: look under the hood of an application from a real project; define the metric for optimization; choose the necessary tools; find bottlenecks /memory leaks and best practice to resolve them. We'll improve the application step by step and we’ll what with simple analysis and simple best practice we can significantly reduce total resources usage.

fwdaysonline conference.net
The Present and The Future of Functional Programming in C++
The Present and The Future of Functional Programming in C++The Present and The Future of Functional Programming in C++
The Present and The Future of Functional Programming in C++

Keynote talk for C++ Siberia 2019. I'm speaking about why Functional Programming is important in C++ world, what is the philosophy of FP in C++, and what features do we have. I'm presenting a connection of constexpr and template metaprogramming to pure FP, and talking about why monads are inevitable. I'm also discussing an upcoming features in C++.

c++haskellfunctional programming
NetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionNetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf Edition

The document discusses various new features in C# and .NET, including: - Async Main method allowing async entry points - Inferred tuple element names for cleaner tuple syntax - Default literal expressions avoiding unnecessary casts - Non-trailing named arguments for more flexible calling syntax - Pattern matching and switch expressions for more control flows - Reference semantics for value types for improved performance - And more proposals still in development like nullable reference types, ranges, and patterns. It also provides links to documentation and code repositories for further reading.

c#c#7c#8
public async ValueTask<int> SumAsync(IEnumerable<ValueTask<int>> ns)
{
var sum = 0;
foreach (var nTask in ns)
{
var n = await nTask;
sum += n;
}
return sum;
}
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#generalized-async-return-types
http://bit.ly/csasyncgeneral
C# 7.1
var x = (f1: 1, f2: 2);
var tuple = (x.f1, x.f2, x);
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7-1#inferred-tuple-element-names
http://bit.ly/cstuplainfer
Func<string, bool> predicate = default;
int i = default;
N(default);
https://docs.microsoft.com/dotnet/csharp/programming-guide/statements-expressions-operators/default-value-expressions
http://bit.ly/csliteraldefault

Recommended for you

Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial

C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX. This reference will take you through simple and practical approach while learning C++ Programming language.

tutorialc++ programming tutorialc++ programming
CppTutorial.ppt
CppTutorial.pptCppTutorial.ppt
CppTutorial.ppt

The document provides an overview of several C++ concepts including basic syntax, compiling programs, argument passing, dynamic memory allocation, and object-oriented programming. It demonstrates simple C++ programs and functions. It discusses best practices like separating interface and implementation using header files. It also introduces C++ standard library features like vectors and the importance of avoiding unnecessary copying.

ghjhj
ELAVARASAN.pdf
ELAVARASAN.pdfELAVARASAN.pdf
ELAVARASAN.pdf

This document provides details about a student project titled "Multifunctional Tools" created using Python. The project allows users to perform various mathematical and logical operations through a graphical user interface. It includes functions for calculations, string manipulation, ASCII conversions, checking vowels/consonants, palindromes, prime numbers and more. The project was created by the student to provide a single platform for different operations and help users with schoolwork. It makes use of Python modules and functions along with a Tkinter GUI.

cs class12
(int, int) N(int[] ns = default) => default;
string O()
{
return default;
}
T P<T>()
{
T t = default;
return t;
}
https://docs.microsoft.com/dotnet/csharp/programming-guide/statements-expressions-operators/default-value-expressions
http://bit.ly/csliteraldefault
static async Task<int> Main(string[] args)
{
await Task.Delay(500);
WriteLine("Done");
return 0;
}
https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7-1#async-main
http://bit.ly/csasyncmain
C# 7.2
void M(int i, int j) { }
void N()
{
M(i: 2, 3);
}
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/non-trailing-named-arguments.md
http://bit.ly/csntna

Recommended for you

JSLounge - TypeScript 소개
JSLounge - TypeScript 소개JSLounge - TypeScript 소개
JSLounge - TypeScript 소개

TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. It adds optional static types, classes, and interfaces to JavaScript to enable scalable application development. TypeScript uses type inference and structural subtyping and works seamlessly with existing JavaScript code and libraries. Type annotations provide compile-time safety while not impacting runtime behavior. TypeScript supports popular module systems and compiles to idiomatic JavaScript that runs on any browser, host, or operating system.

Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...

By Daniel Ehrenberg. Slides at https://docs.google.com/presentation/d/1bpvESaWtNnhXV0a95b6GWHhhqUVnGCIPcs37ngqx4Uo/edit#slide=id.g38b91fc952_0_103 Following ES6, TC39 is working with the broader JS developer community to continue evolving the JavaScript programming language. The pipeline operator `x |> f |> g` is an early stage, community-driven proposal to make it easier to compose multiple functions, inspired by similar syntax in other programming language and frameworks like RxJS. In this talk, I'll explain how TC39 works and how this proposal is being carefully developed with extensive feedback and opportunities for you to get involved. (c) WorkerConf 2018 28th June 2018 (Dornbirn, Austria) https://worker.sh/

javascriptspecstc39
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade

O documento discute o uso de visão computacional e inteligência artificial para aplicações médicas e industriais. Ele descreve como CPUs, GPUs e VPUs podem processar IA localmente e com baixo custo usando ferramentas como OpenVINO. Isso permitiria diagnósticos médicos remotos em tempo real com baixo consumo de energia.

tdc2019fln
var m = 0b_101; //5
var n = 0x_00C0; // 192
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/leading-separator.md
http://bit.ly/cs_num
class Base
{
private protected int f;
}
class DerivedInSameAssembly : Base
{
void M()
{
var x = base.f;
}
}
class DerivedInOtherAssembly : Base
{
void M()
{
var x = base.f; //error
}
}
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/private-protected.md
http://bit.ly/csprpr
Vector Add(in Vector v1, in Vector v2)
{
v1 = default(Vector); // not OK!!
v1.X = 0; // not OK!!
Foo(ref v1.X); // not OK!!
// OK:
return new Vector(v1.X +v2.X, v1.Y + v2.Y);
}
https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types
http://bit.ly/csmodin
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/readonly-ref.md#refin-extension-methods
public static Ponto Soma(in this Ponto p1, in Ponto p2) =>
new Ponto(p1.X + p2.X, p1.Y + p2.Y);
void In()
{
Ponto p1 = new Ponto(1, 2), p2 = new Ponto(3, 4);
var pResultado = p1.Soma(p2);
var pResultado2 = p1.Soma(new Ponto(3, 4));
var pResultado3 = new Ponto().Soma(new Ponto(3, 4));
}
http://bit.ly/csmodin

Recommended for you

TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...

O documento discute programação paralela em IA comparando-a à programação paralela tradicional em HPC, aplicando técn

tdc2019fln
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso

O documento fornece um panorama geral da tecnologia e inovação em Santa Catarina, destacando: 1) O setor representa 5,6% da economia catarinense, com faturamento de R$15,53 bilhões; 2) As cidades de Florianópolis e Blumenau são os dois polos com maior crescimento de faturamento no estado; 3) Santa Catarina tem a maior proporção de startups no país, com 19,95% do total nacional.

tdc2019fln
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA

The document discusses Intel Graphics Performance Analyzers (Intel GPA), a suite of graphics performance tools created by Intel to optimize games and real-time graphics applications. It describes Intel GPA's profiling workflow which involves analyzing frames to identify bottlenecks, determining if issues are CPU or GPU bound, and identifying hotspots. It then provides overviews of the tools in Intel GPA like the System Analyzer, Trace Analyzer, Frame Analyzer and their capabilities for profiling graphics performance.

tdc2019fln
public static Ponto Subtrai(ref this Ponto p1, ref Ponto p2) =>
new Ponto(p1.X - p2.X, p1.Y - p2.Y);
void Ref()
{
Ponto p1 = new Ponto(1, 2), p2 = new Ponto(3, 4);
var pResultado = p1.Subtrai(ref p2);
p1.Subtrai(ref new Ponto()); // não compila
new Ponto().Subtrai(ref p1); // não compila
}
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/readonly-ref.md#refin-extension-methods
http://bit.ly/csextref
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/readonly-ref.md#refin-extension-methods
public static void Foo<T>(ref this T p1)
where T : struct
{
}
http://bit.ly/csextref
ref readonly Vector FetchOrigin() => ref origin;
void M()
{
var v1 = new Vector(1, 2, 3);
var v2 = new Vector(4, 5, 6);
var vSum = Add(v1, v2);
ref readonly var origin = ref FetchOrigin();
}
private readonly Vector origin = new Vector(0, 0, 0);
https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types
http://bit.ly/csretrefro
ref readonly var origin = ref FetchOrigin();
var origin2 = FetchOrigin(); // copy created
https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types
http://bit.ly/csretrefro

Recommended for you

TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino

O documento apresenta uma palestra sobre detecção de objetos em tempo real utilizando redes neurais convolucionais e o framework OpenVINO da Intel. É discutido o algoritmo YOLO para detecção de objetos em imagens e sua implementação no Intel AI Dev Cloud para treinamento. Também é mostrado como otimizar modelos de deep learning utilizando o OpenVINO para inferência em tempo real.

tdc2019fln
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...

O documento apresenta uma palestra sobre OpenCV, biblioteca de código aberto para visão computacional. Aborda os fundamentos da visão computacional e aplicações da OpenCV, incluindo processamento de imagens, reconhecimento de padrões e diretrizes para melhor desempenho em processadores Intel. Também discute tópicos como aprendizado de máquina profundo, YOLO e conformidade com leis de privacidade como o GDPR.

tdc2019fln
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices

This document discusses Intel's compiler optimizations and how they may differ depending on the microprocessor. It notes that: - Intel's compilers may optimize differently for non-Intel microprocessors, including optimizations for SSE2, SSE3, and SSSE3 instruction sets. - Intel does not guarantee the availability, functionality, or effectiveness of any optimization on non-Intel microprocessors. - Microprocessor-dependent optimizations are intended for use with Intel microprocessors only. Certain non-Intel specific optimizations are also reserved for Intel microprocessors.

tdc2019fln
readonly struct Ponto
{
public Ponto(float x, float y)
{
X = x;
Y = y;
}
public float X { get; }
public float Y { get; }
private readonly static Ponto origem = new Ponto();
public static ref readonly Ponto Origem => ref origem;
}
https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types#readonly-struct-type
http://bit.ly/csrostruct
ref readonly var p = ref Ponto.Origem;
var x = p.X; // sem cópia
https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types#readonly-struct-type
http://bit.ly/csrostruct
ref int M()
{
var arr = new[] { 1, 2, 3 };
var otherArr = new[] { 4, 5, 6 };
ref var r = ref (arr != null ? ref arr[0]: ref
otherArr[0]);
Foo(ref (arr != null ? ref arr[0]: ref otherArr[0]));
(arr != null ? ref arr[0]: ref otherArr[0]) = 1;
return ref (arr != null ? ref arr[0]: ref otherArr[0]);
}
void Foo(ref int i) => i = 42;
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/conditional-ref.md
http://bit.ly/csternarioref
ref struct TwoSpans<T>
{
// pode ter campos desde que não sejam classes
public Span<T> first;
public Span<T> second;
}
// erro: arrays of ref-like types are not allowed.
TwoSpans<int>[] arr = null;
https://docs.microsoft.com/en-us/dotnet/csharp/reference-semantics-with-value-types#ref-struct-type

Recommended for you

Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica

O documento discute a aplicação de bancos de dados orientados a grafos para análise de vínculos na segurança pública. Esses bancos permitem modelar dados de crimes e suspeitos como vértices e arestas em um grafo, possibilitando correlacionar informações de forma mais eficiente do que bancos relacionais. Isso pode identificar proximidades entre suspeitos e verificar vínculos de diferentes perspectivas em tempo real, auxiliando investigações criminais.

tdc2019fln
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#

O documento apresenta os principais conceitos da programação funcional usando a linguagem F#, como imutabilidade, funções como valores, composição de funções, type providers e features como Option e unidades de medida. O objetivo é mostrar como F# oferece um paradigma diferente de programação e como seus recursos podem ser usados no desenvolvimento .NET.

tdc2019fln
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus

This document summarizes the development of an API for addresses in Go. It describes using Beego and pure Go for scalability. It implemented middlewares for routing, error handling, authentication, and logging. It also integrated New Relic for metrics. The API routes and controllers are chained through the middleware handlers. In conclusion, the API was able to successfully provide address functionality and insights through integration of middlewares and third-party services.

tdc2018sp
readonly ref struct ReadOnlyRefPoint2D
{
public int X { get; }
public int Y { get; }
public ReadOnlyRefPoint2D(int x, int y) =>
(X, Y) = (x, y);
}
https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types#readonly-ref-struct-type
void M()
{
Span<int> arr = stackalloc int[3];
}
https://msdn.microsoft.com/en-us/magazine/mt814808.aspx
Não é unsafe
C# 7.3
Span<int> RowFive = new Span<int>(PascalsTriangle, 10, 5);
fixed (int* ptrToRow = RowFive)
{
// Soma os números 1,4,6,4,1
var sum = 0;
for (int i = 0; i < RowFive.Length; i++)
{
sum += *(ptrToRow + i);
}
Console.WriteLine(sum);
}
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/pattern-based-fixed.md
int[] PascalsTriangle = {
1,
1, 1,
1, 2, 1,
1, 3, 3, 1,
1, 4, 6, 4, 1,
1, 5, 10, 10, 5, 1 };
Span<T>.GetPinnableReference()

Recommended for you

TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?

O documento discute a importância da personalização e da relevância na web. Defende que sites devem entender os usuários individuais e fornecer experiências adaptadas às necessidades e desejos únicos de cada pessoa. Explica como o web mining, logs de servidor e clientes podem ser usados para analisar o comportamento dos usuários e melhorar a usabilidade e a relevância dos sites.

tdc2018sp
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang

O documento descreve os princípios da arquitetura limpa em Go, dividindo o código em 4 camadas: entidades, casos de uso, controladores e frameworks/drivers. A arquitetura promove independência de frameworks, teste, interface gráfica e bancos de dados, além de permitir testes por camada. Um exemplo completo está disponível em um repositório no GitHub.

tdc2018sp
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA

O documento discute as vantagens de usar a linguagem Go para testes de software, apresentando diversas ferramentas para testes com Go, como Godog para testes de aceitação baseados em BDD, Gomega para testes unitários e Ginkgo para execução de testes. Também cita empresas que usam Go em produção como Uber, Docker e Dropbox.

tdc2018sp
unsafe struct S
{
public fixed int myFixedField[10];
}
class C
{
private static S s = new S();
unsafe public void M()
{
int p = s.myFixedField[5];
}
}
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7-3#indexing-fixed-fields-does-not-require-pinning
// CSharp 7.2
fixed (int* ptr = s.myFixedField)
{
int p = ptr[5];
}
var structs = new StructGrande[]
{ new StructGrande(), new StructGrande() };
ref StructGrande refLocal = ref structs[0];
refLocal = ref structs[1];
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7-3#ref-local-variables-may-be-reassigned
unsafe void M()
{
int* pArr = stackalloc int[3] { 1, 2, 3 };
int* pArr2 = stackalloc int[] { 1, 2, 3 };
Span<int> arr = stackalloc[] { 1, 2, 3 };
}
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7-3#stackalloc-arrays-support-initializers
unsafe public static byte[] ToByteArray<T>
(this T argument) where T : unmanaged
{
var size = sizeof(T);
var result = new byte[size];
byte* p = (byte*)&argument;
for (var i = 0; i < size; i++)
result[i] = *p++;
return result;
}
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters#unmanaged-constraint

Recommended for you

TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia

O documento discute (1) a tokenização como método seguro de armazenar dados de cartão, (2) as integrações com as APIs do Google Pay e Apple Pay para permitir pagamentos móveis dentro de aplicativos, e (3) a crescente tendência dos pagamentos digitais em carteiras móveis em todo o mundo.

tdc2018sp
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service

O documento discute o Azure SignalR Service, um serviço gerenciado pela Microsoft que permite escalar aplicações em tempo real sem gerenciar a infraestrutura subjacente. O serviço oferece fallback automático entre protocolos de comunicação e permite 1000 conexões por unidade com SLA de 99,9%. O documento também fornece instruções sobre como adicionar o serviço a uma aplicação ASP.NET Core.

tdc2018sp
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET

O documento discute a evolução do .NET, desde seu foco inicial em aplicativos empresariais para Windows até se tornar uma pilha multiplataforma de código aberto. Também compara o .NET Framework e o .NET Core, explicando quando cada um é mais adequado, e demonstra o SQL Server rodando no Linux.

tdc2018sp
public static TDelegate TypeSafeCombine<TDelegate>
(this TDelegate source, TDelegate target)
where TDelegate : System.Delegate =>
System.Delegate.Combine(source, target)
as TDelegate;
Action first = () => Console.WriteLine("this");
Action second = () => Console.WriteLine("that");
var combined = first.TypeSafeCombine(second);
combined();
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters#delegate-constraints
public static Dictionary<int, string> EnumNamedValues<T>()
where T : System.Enum
{
var result = new Dictionary<int, string>();
var values = Enum.GetValues(typeof(T));
foreach (int item in values)
result.Add(item, Enum.GetName(typeof(T), item));
return result;
}
enum Rainbow { Red, Orange, Yellow, Green, Blue, Indigo, Violet }
var map = EnumNamedValues<Rainbow>();
foreach (var pair in map)
Console.WriteLine($"{pair.Key}:t{pair.Value}");
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters#enum-constraints
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/expression-variables-in-initializers.md
var t1 = (1, 2);
var t2 = (3, 4);
var iguais = t1 == t2;
var diferentes = t1 != t2;
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/expression-variables-in-initializers.md
var query = from text in strings
select int.TryParse(text, out int value)
? value : (int?)null;

Recommended for you

TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...

1) A apresentação introduz Fernando Mendes e Mikaeri Ohana, arquiteto de software e desenvolvedor de software respectivamente, e descreve o tópico da palestra sobre obter métricas com TDD utilizando build automatizado e deploy no Azure. 2) A palestra discute os benefícios dos testes unitários, TDD e cobertura de código e faz uma demonstração. 3) As ferramentas xUnit, OpenCover e ReportGenerator são apresentadas para testes, cobertura e relatórios.

tdc2018sp
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#

O documento apresenta a linguagem de programação funcional F# como parte do .NET, destacando que é fortemente tipada e permite programação funcional "impura" com interoperabilidade com o ecossistema .NET. Também menciona o apoio da Microsoft à linguagem e exemplos de onde ela pode ser usada.

tdc2018sp
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core

O documento descreve o Blazor, um projeto experimental que permite criar SPAs usando C# e WebAssembly. Ele explica que o WebAssembly é um novo formato para compilação web e lista algumas vantagens do Blazor, como ser estável e usar ferramentas da indústria. Também menciona pré-requisitos para usar o Blazor e dicas de hospedagem.

tdc2018sp
public class Foo
{
protected Foo(out int i) => i = 1;
}
public class Bar : Foo
{
public int Value { get; }
public Bar() : base(out int value) => Value = value;
}
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/expression-variables-in-initializers.md
public class Baz
{
private readonly int field1 =
int.TryParse(SomeStatic.Text, out int value)
? Value
: -1;
}
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/expression-variables-in-initializers.md
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/auto-prop-field-attrs.md
[Serializable]
public class Foo
{
[field: NonSerialized]
public string MySecret { get; set; }
}
C# 8.0

Recommended for you

TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1

Este documento resume as principais novidades do ASP.NET Core 2.1, incluindo melhorias na segurança HTTPS, suporte ao GDPR, imagens Docker menores, o tipo ActionResult<T> para simplificar APIs, e Razor Class Libraries para compartilhar elementos UI entre projetos. O documento também discute outras atualizações como suporte a Identity, Kestrel, templates SPA e SignalR.

tdc2018sp
Bedok NEWater Photostory - COM322 Assessment (Story 2)
Bedok NEWater Photostory - COM322 Assessment (Story 2)Bedok NEWater Photostory - COM322 Assessment (Story 2)
Bedok NEWater Photostory - COM322 Assessment (Story 2)

COM322 Assessment - Story 2

public class Cartesian { public int X { get; } public int Y { get; } }
public class Polar
{
public static bool operator is(Cartesian c, out double R, out double Theta)
{
R = Math.Sqrt(c.X * c.X + c.Y * c.Y);
Theta = Math.Atan2(c.Y, c.X);
return c.X != 0 || c.Y != 0;
}
}
void M()
{
var c = new Cartesian(3, 4);
if (c is Polar(var R, _)) WriteLine(R);
}
https://github.com/dotnet/csharplang/blob/master/proposals/patterns.md
void N(string? aNullableString, bool condition) {
WriteLine(aNullableString.Length); // warning
if (aNullableString != null)
WriteLine(aNullableString); // no warning
if (!string.IsNullOrWhiteSpace(aNullableString))
WriteLine(aNullableString!.Length); // I know better
var anotherNullableString = condition ? "Hello" : aNullableString;
WriteLine(anotherNullableString.Length); // warning
var yetAnotherNullableString = condition ? "Hello" : null;
WriteLine(yetAnotherNullableString.Length); // warning
string nonNullableString = null; //warning
WriteLine(nonNullableString); // no warning
}
https://github.com/dotnet/csharplang/blob/master/proposals/nullable-reference-types.md
https://github.com/dotnet/roslyn/blob/features/NullableReferenceTypes/docs/features/NullableReferenceTypes/README.md
async Task M()
{
foreach await (var i in GetStream())
WriteLine(i);
}
IAsyncEnumerable<int> GetStream() => new[] { 1, 2, 3 }.ToAsyncEnumerable();
async IAsyncEnumerable<int> MyIterator()
{
for (int i = 0; i < 100; i++)
{
await Task.Delay(1000);
yield return i;
}
}
https://github.com/dotnet/csharplang/blob/master/proposals/async-streams.md
using await (IAsyncDisposable resource = await store.GetRecordAsync(…)) { … }
class Foo : IAsyncDisposable
{
public async Task DisposeAsync()
{
await ...
}
}
https://github.com/dotnet/csharplang/blob/master/proposals/async-streams.md

Recommended for you

(T.L.E.) Agriculture: Essentials of Gardening
(T.L.E.) Agriculture: Essentials of Gardening(T.L.E.) Agriculture: Essentials of Gardening
(T.L.E.) Agriculture: Essentials of Gardening

(𝐓𝐋𝐄 𝟏𝟎𝟎) (𝐋𝐞𝐬𝐬𝐨𝐧 𝟏.𝟎)-𝐅𝐢𝐧𝐚𝐥𝐬 Lesson Outcome: -Students will understand the basics of gardening, including the importance of soil, water, and sunlight for plant growth. They will learn to identify and use essential gardening tools, plant seeds, and seedlings properly, and manage common garden pests using eco-friendly methods.

tlek-12
The basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptxThe basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptx

Pie

How to Install Theme in the Odoo 17 ERP
How to  Install Theme in the Odoo 17 ERPHow to  Install Theme in the Odoo 17 ERP
How to Install Theme in the Odoo 17 ERP

With Odoo, we can select from a wide selection of attractive themes. Many excellent ones are free to use, while some require payment. Putting an Odoo theme in the Odoo module directory on our server, downloading the theme, and then installing it is a simple process.

odoo 17theme in odoohow to install theme in odoo
interface I
{
void M() { WriteLine("I.M"); }
}
class C : I { } // OK
void M()
{ I i = new C();
i.M(); // prints "I.M"
}
https://github.com/dotnet/csharplang/blob/master/proposals/default-interface-methods.md
Dictionary<string, List<int>> field =
new() { { "item1", new() { 1, 2, 3 } } };
XmlReader.Create(reader,
new() { IgnoreWhitespace = true });
https://github.com/dotnet/csharplang/blob/master/proposals/target-typed-new.md
// list[Index.CreateFromEnd(1)]
var ultimoItem = list[^1];
// list[Index.CreateFromEnd(2)]
var penultimoItem = list[^2];
// list[3, Index.CreateFromEnd(2)]
var multiDimensional = list[3, ^2];
https://github.com/dotnet/csharplang/blob/master/proposals/ranges.md
// list[Range.Create(2, Index.CreateFromEnd(3))]
var slice1 = list[2..^3];
// list[Range.ToEnd(Index.CreateFromEnd(3))]
var slice2 = list[..^3];
// list[Range.FromStart(2)]
var slice3 = list[2..];
// list[Range.All]
var slice4 = list[..];
// list[Range.Create(1, 2), Range.All]
var multiDimensional = list[1..2, ..]
https://github.com/dotnet/csharplang/blob/master/proposals/ranges.md

Recommended for you

Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...
Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...
Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...

Presented as a plenary session in iTELL 2024 in Salatiga on 4 July 2024. The plenary focuses on understanding and intepreting relevant TPACK competence for teachers to be adept in teaching multimodality in the digital age. It juxtaposes the results of research on multimodality with its contextual implementation in the teaching of English subject in the Indonesian Emancipated Curriculum.

#itell2024tpackdpack
Views in Odoo - Advanced Views - Pivot View in Odoo 17
Views in Odoo - Advanced Views - Pivot View in Odoo 17Views in Odoo - Advanced Views - Pivot View in Odoo 17
Views in Odoo - Advanced Views - Pivot View in Odoo 17

In Odoo, the pivot view is a graphical representation of data that allows users to analyze and summarize large datasets quickly. It's a powerful tool for generating insights from your business data. The pivot view in Odoo is a valuable tool for analyzing and summarizing large datasets, helping you gain insights into your business operations.

odoo 17pivot viewpivot view in odoo
Is Email Marketing Really Effective In 2024?
Is Email Marketing Really Effective In 2024?Is Email Marketing Really Effective In 2024?
Is Email Marketing Really Effective In 2024?

Slide 1 Is Email Marketing Really Effective in 2024? Yes, Email Marketing is still a great method for direct marketing. Slide 2 In this article we will cover: - What is Email Marketing? - Pros and cons of Email Marketing. - Tools available for Email Marketing. - Ways to make Email Marketing effective. Slide 3 What Is Email Marketing? Using email to contact customers is called Email Marketing. It's a quiet and effective communication method. Mastering it can significantly boost business. In digital marketing, two long-term assets are your website and your email list. Social media apps may change, but your website and email list remain constant. Slide 4 Types of Email Marketing: 1. Welcome Emails 2. Information Emails 3. Transactional Emails 4. Newsletter Emails 5. Lead Nurturing Emails 6. Sponsorship Emails 7. Sales Letter Emails 8. Re-Engagement Emails 9. Brand Story Emails 10. Review Request Emails Slide 5 Advantages Of Email Marketing 1. Cost-Effective: Cheaper than other methods. 2. Easy: Simple to learn and use. 3. Targeted Audience: Reach your exact audience. 4. Detailed Messages: Convey clear, detailed messages. 5. Non-Disturbing: Less intrusive than social media. 6. Non-Irritating: Customers are less likely to get annoyed. 7. Long Format: Use detailed text, photos, and videos. 8. Easy to Unsubscribe: Customers can easily opt out. 9. Easy Tracking: Track delivery, open rates, and clicks. 10. Professional: Seen as more professional; customers read carefully. Slide 6 Disadvantages Of Email Marketing: 1. Irrelevant Emails: Costs can rise with irrelevant emails. 2. Poor Content: Boring emails can lead to disengagement. 3. Easy Unsubscribe: Customers can easily leave your list. Slide 7 Email Marketing Tools Choosing a good tool involves considering: 1. Deliverability: Email delivery rate. 2. Inbox Placement: Reaching inbox, not spam or promotions. 3. Ease of Use: Simplicity of use. 4. Cost: Affordability. 5. List Maintenance: Keeping the list clean. 6. Features: Regular features like Broadcast and Sequence. 7. Automation: Better with automation. Slide 8 Top 5 Email Marketing Tools: 1. ConvertKit 2. Get Response 3. Mailchimp 4. Active Campaign 5. Aweber Slide 9 Email Marketing Strategy To get good results, consider: 1. Build your own list. 2. Never buy leads. 3. Respect your customers. 4. Always provide value. 5. Don’t email just to sell. 6. Write heartfelt emails. 7. Stick to a schedule. 8. Use photos and videos. 9. Segment your list. 10. Personalize emails. 11. Ensure mobile-friendliness. 12. Optimize timing. 13. Keep designs clean. 14. Remove cold leads. Slide 10 Uses of Email Marketing: 1. Affiliate Marketing 2. Blogging 3. Customer Relationship Management (CRM) 4. Newsletter Circulation 5. Transaction Notifications 6. Information Dissemination 7. Gathering Feedback 8. Selling Courses 9. Selling Products/Services Read Full Article: https://digitalsamaaj.com/is-email-marketing-effective-in-2024/

email marketingemailconvertkit
class Person : IEquatable<Person>
{
public string First { get; }
public string Last { get; }
public Person(string First, string Last) => (this.First, this.Last) = (First, Last);
public void Deconstruct(out string First, out string Last)
=> (First, Last) = (this.First, this.Last);
public bool Equals(Person other)
=> other != null && First == other.First && Last == other.Last;
public override bool Equals(object obj) => obj is Person other ? Equals(other) : false;
public override int GetHashCode() => GreatHashFunction(First, Last);
…
}
class Person(string First, string Last);
https://github.com/dotnet/csharplang/blob/master/proposals/records.md
extension class Enrollee extends Person
{
// static field
static Dictionary<Person, Professor> enrollees = new Dictionary<Person, Professor>();
// instance method
public void Enroll(Professor supervisor) { enrollees[this] = supervisor; }
// instance property
public Professor Supervisor => enrollees.TryGetValue(this, out var supervisor) ? supervisor : null;
// static property
public static ICollection<Person> Students => enrollees.Keys;
// instance constructor
public Person(string name, Professor supervisor) : this(name) { this.Enroll(supervisor); }
}
https://github.com/dotnet/csharplang/issues/192
public shape SGroup<T>
{
static T operator +(T t1, T t2);
static T Zero { get; }
}
https://github.com/dotnet/csharplang/issues/164
public static AddAll<T>(T[] ts) where T : SGroup<T>
{
var result = T.Zero;
foreach (var t in ts) { result += t; }
return result;
}
https://github.com/dotnet/csharplang/issues/164

Recommended for you

eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Book Allied Health Sciences kmu MCQs.docx
Book Allied Health Sciences kmu MCQs.docxBook Allied Health Sciences kmu MCQs.docx
Book Allied Health Sciences kmu MCQs.docx

This book for Allied Health Sciences, DPT and BS Nursing for 1st and 2nd semester.

Principles of Roods Approach!!!!!!!.pptx
Principles of Roods Approach!!!!!!!.pptxPrinciples of Roods Approach!!!!!!!.pptx
Principles of Roods Approach!!!!!!!.pptx

Principles of Rood’s Approach Treatment technique used in physiotherapy for neurological patients which aids them to recover and improve quality of life Facilitatory techniques Inhibitory techniques

#physiotherapy##roodsapproach##neurophysiotherapy#
public shape SGroup<T>
{
static T operator +(T t1, T t2);
static T Zero { get; }
}
https://github.com/dotnet/csharplang/issues/164
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
w w w. l a m b d a 3 . c o m . b r
Obrigado!
Giovanni Bassi
@giovannibassi
/giggio.tech

More Related Content

What's hot

Quiz using C++
Quiz using C++Quiz using C++
Quiz using C++
Sushil Mishra
 
Cluj.py Meetup: Extending Python in C
Cluj.py Meetup: Extending Python in CCluj.py Meetup: Extending Python in C
Cluj.py Meetup: Extending Python in C
Steffen Wenz
 
programming in C++ report
programming in C++ reportprogramming in C++ report
programming in C++ report
vikram mahendra
 
Function basics
Function basicsFunction basics
Function basics
mohamed sikander
 
Pads lab manual final
Pads lab manual finalPads lab manual final
Pads lab manual final
AhalyaR
 
C++ assignment
C++ assignmentC++ assignment
C++ assignment
Zohaib Ahmed
 
Practical File of C Language
Practical File of C LanguagePractical File of C Language
Practical File of C Language
RAJWANT KAUR
 
Data Structures Practical File
Data Structures Practical File Data Structures Practical File
Data Structures Practical File
Harjinder Singh
 
Implementing string
Implementing stringImplementing string
Implementing string
mohamed sikander
 
เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™
เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™
เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™
Boom Baphomet
 
การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)
การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)
การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)
HamHam' Kc
 
Why you should be using structured logs
Why you should be using structured logsWhy you should be using structured logs
Why you should be using structured logs
Stefan Krawczyk
 
C++ file
C++ fileC++ file
C++ file
Mukund Trivedi
 
C++ Question on References and Function Overloading
C++ Question on References and Function OverloadingC++ Question on References and Function Overloading
C++ Question on References and Function Overloading
mohamed sikander
 
Pattern printing-in-c(Jaydip Kikani)
Pattern printing-in-c(Jaydip Kikani)Pattern printing-in-c(Jaydip Kikani)
Pattern printing-in-c(Jaydip Kikani)
Jaydip JK
 
C basics
C basicsC basics
C basics
MSc CST
 
systems programming lab programs in c
systems programming lab programs in csystems programming lab programs in c
systems programming lab programs in c
Meghna Roy
 
Stl algorithm-Basic types
Stl algorithm-Basic typesStl algorithm-Basic types
Stl algorithm-Basic types
mohamed sikander
 

What's hot (18)

Quiz using C++
Quiz using C++Quiz using C++
Quiz using C++
 
Cluj.py Meetup: Extending Python in C
Cluj.py Meetup: Extending Python in CCluj.py Meetup: Extending Python in C
Cluj.py Meetup: Extending Python in C
 
programming in C++ report
programming in C++ reportprogramming in C++ report
programming in C++ report
 
Function basics
Function basicsFunction basics
Function basics
 
Pads lab manual final
Pads lab manual finalPads lab manual final
Pads lab manual final
 
C++ assignment
C++ assignmentC++ assignment
C++ assignment
 
Practical File of C Language
Practical File of C LanguagePractical File of C Language
Practical File of C Language
 
Data Structures Practical File
Data Structures Practical File Data Structures Practical File
Data Structures Practical File
 
Implementing string
Implementing stringImplementing string
Implementing string
 
เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™
เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™
เธเธฒเธฃเน€เธ‚ เธขเธ™เธ„เธณเธช _เธ‡เธ„เธงเธšเธ„_เธกเธ‚__เธ™เธž__เธ™เธเธฒเธ™
 
การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)
การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)
การเข ยนคำส _งควบค_มข__นพ__นฐาน (1)
 
Why you should be using structured logs
Why you should be using structured logsWhy you should be using structured logs
Why you should be using structured logs
 
C++ file
C++ fileC++ file
C++ file
 
C++ Question on References and Function Overloading
C++ Question on References and Function OverloadingC++ Question on References and Function Overloading
C++ Question on References and Function Overloading
 
Pattern printing-in-c(Jaydip Kikani)
Pattern printing-in-c(Jaydip Kikani)Pattern printing-in-c(Jaydip Kikani)
Pattern printing-in-c(Jaydip Kikani)
 
C basics
C basicsC basics
C basics
 
systems programming lab programs in c
systems programming lab programs in csystems programming lab programs in c
systems programming lab programs in c
 
Stl algorithm-Basic types
Stl algorithm-Basic typesStl algorithm-Basic types
Stl algorithm-Basic types
 

Similar to TDC2018SP | Trilha .Net - Novidades do C# 7 e 8

C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8
Giovanni Bassi
 
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#
Bertrand Le Roy
 
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp
CodeOps Technologies LLP
 
All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2go
Moriyoshi Koizumi
 
Design Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on ExamplesDesign Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on Examples
Ganesh Samarthyam
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDB
MongoDB
 
mobl
moblmobl
mobl
zefhemel
 
C++ manual Report Full
C++ manual Report FullC++ manual Report Full
C++ manual Report Full
Thesis Scientist Private Limited
 
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
Phil Calçado
 
Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»
SpbDotNet Community
 
The First C# Project Analyzed
The First C# Project AnalyzedThe First C# Project Analyzed
The First C# Project Analyzed
PVS-Studio
 
Visual studio 2008
Visual studio 2008Visual studio 2008
Visual studio 2008
Luis Enrique
 
"Optimization of a .NET application- is it simple ! / ?", Yevhen Tatarynov
"Optimization of a .NET application- is it simple ! / ?",  Yevhen Tatarynov"Optimization of a .NET application- is it simple ! / ?",  Yevhen Tatarynov
"Optimization of a .NET application- is it simple ! / ?", Yevhen Tatarynov
Fwdays
 
The Present and The Future of Functional Programming in C++
The Present and The Future of Functional Programming in C++The Present and The Future of Functional Programming in C++
The Present and The Future of Functional Programming in C++
Alexander Granin
 
NetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionNetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf Edition
Paulo Morgado
 
Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial
Vikas Sharma
 
CppTutorial.ppt
CppTutorial.pptCppTutorial.ppt
CppTutorial.ppt
HODZoology3
 
ELAVARASAN.pdf
ELAVARASAN.pdfELAVARASAN.pdf
ELAVARASAN.pdf
dharmendra kumar jaiswal
 
JSLounge - TypeScript 소개
JSLounge - TypeScript 소개JSLounge - TypeScript 소개
JSLounge - TypeScript 소개
Reagan Hwang
 
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Igalia
 

Similar to TDC2018SP | Trilha .Net - Novidades do C# 7 e 8 (20)

C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8
 
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#
 
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp
 
All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2go
 
Design Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on ExamplesDesign Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on Examples
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDB
 
mobl
moblmobl
mobl
 
C++ manual Report Full
C++ manual Report FullC++ manual Report Full
C++ manual Report Full
 
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
 
Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»
 
The First C# Project Analyzed
The First C# Project AnalyzedThe First C# Project Analyzed
The First C# Project Analyzed
 
Visual studio 2008
Visual studio 2008Visual studio 2008
Visual studio 2008
 
"Optimization of a .NET application- is it simple ! / ?", Yevhen Tatarynov
"Optimization of a .NET application- is it simple ! / ?",  Yevhen Tatarynov"Optimization of a .NET application- is it simple ! / ?",  Yevhen Tatarynov
"Optimization of a .NET application- is it simple ! / ?", Yevhen Tatarynov
 
The Present and The Future of Functional Programming in C++
The Present and The Future of Functional Programming in C++The Present and The Future of Functional Programming in C++
The Present and The Future of Functional Programming in C++
 
NetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionNetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf Edition
 
Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial
 
CppTutorial.ppt
CppTutorial.pptCppTutorial.ppt
CppTutorial.ppt
 
ELAVARASAN.pdf
ELAVARASAN.pdfELAVARASAN.pdf
ELAVARASAN.pdf
 
JSLounge - TypeScript 소개
JSLounge - TypeScript 소개JSLounge - TypeScript 소개
JSLounge - TypeScript 소개
 
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
 

More from tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
tdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
tdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
tdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
tdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
tdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
tdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
tdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
tdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
tdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
tdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
tdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
tdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
tdc-globalcode
 

More from tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
 

Recently uploaded

Bedok NEWater Photostory - COM322 Assessment (Story 2)
Bedok NEWater Photostory - COM322 Assessment (Story 2)Bedok NEWater Photostory - COM322 Assessment (Story 2)
Bedok NEWater Photostory - COM322 Assessment (Story 2)
Liyana Rozaini
 
(T.L.E.) Agriculture: Essentials of Gardening
(T.L.E.) Agriculture: Essentials of Gardening(T.L.E.) Agriculture: Essentials of Gardening
(T.L.E.) Agriculture: Essentials of Gardening
MJDuyan
 
The basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptxThe basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptx
heathfieldcps1
 
How to Install Theme in the Odoo 17 ERP
How to  Install Theme in the Odoo 17 ERPHow to  Install Theme in the Odoo 17 ERP
How to Install Theme in the Odoo 17 ERP
Celine George
 
Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...
Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...
Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...
Neny Isharyanti
 
Views in Odoo - Advanced Views - Pivot View in Odoo 17
Views in Odoo - Advanced Views - Pivot View in Odoo 17Views in Odoo - Advanced Views - Pivot View in Odoo 17
Views in Odoo - Advanced Views - Pivot View in Odoo 17
Celine George
 
Is Email Marketing Really Effective In 2024?
Is Email Marketing Really Effective In 2024?Is Email Marketing Really Effective In 2024?
Is Email Marketing Really Effective In 2024?
Rakesh Jalan
 
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
siemaillard
 
Book Allied Health Sciences kmu MCQs.docx
Book Allied Health Sciences kmu MCQs.docxBook Allied Health Sciences kmu MCQs.docx
Book Allied Health Sciences kmu MCQs.docx
drtech3715
 
Principles of Roods Approach!!!!!!!.pptx
Principles of Roods Approach!!!!!!!.pptxPrinciples of Roods Approach!!!!!!!.pptx
Principles of Roods Approach!!!!!!!.pptx
ibtesaam huma
 
L1 L2- NLC PPT for Grade 10 intervention
L1 L2- NLC PPT for Grade 10 interventionL1 L2- NLC PPT for Grade 10 intervention
L1 L2- NLC PPT for Grade 10 intervention
RHODAJANEAURESTILA
 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
marianell3076
 
Ardra Nakshatra (आर्द्रा): Understanding its Effects and Remedies
Ardra Nakshatra (आर्द्रा): Understanding its Effects and RemediesArdra Nakshatra (आर्द्रा): Understanding its Effects and Remedies
Ardra Nakshatra (आर्द्रा): Understanding its Effects and Remedies
Astro Pathshala
 
NLC English 7 Consolidation Lesson plan for teacher
NLC English 7 Consolidation Lesson plan for teacherNLC English 7 Consolidation Lesson plan for teacher
NLC English 7 Consolidation Lesson plan for teacher
AngelicaLubrica
 
matatag curriculum education for Kindergarten
matatag curriculum education for Kindergartenmatatag curriculum education for Kindergarten
matatag curriculum education for Kindergarten
SarahAlie1
 
AI Risk Management: ISO/IEC 42001, the EU AI Act, and ISO/IEC 23894
AI Risk Management: ISO/IEC 42001, the EU AI Act, and ISO/IEC 23894AI Risk Management: ISO/IEC 42001, the EU AI Act, and ISO/IEC 23894
AI Risk Management: ISO/IEC 42001, the EU AI Act, and ISO/IEC 23894
PECB
 
Webinar Innovative assessments for SOcial Emotional Skills
Webinar Innovative assessments for SOcial Emotional SkillsWebinar Innovative assessments for SOcial Emotional Skills
Webinar Innovative assessments for SOcial Emotional Skills
EduSkills OECD
 
Split Shifts From Gantt View in the Odoo 17
Split Shifts From Gantt View in the  Odoo 17Split Shifts From Gantt View in the  Odoo 17
Split Shifts From Gantt View in the Odoo 17
Celine George
 
How to Configure Time Off Types in Odoo 17
How to Configure Time Off Types in Odoo 17How to Configure Time Off Types in Odoo 17
How to Configure Time Off Types in Odoo 17
Celine George
 

Recently uploaded (20)

Bedok NEWater Photostory - COM322 Assessment (Story 2)
Bedok NEWater Photostory - COM322 Assessment (Story 2)Bedok NEWater Photostory - COM322 Assessment (Story 2)
Bedok NEWater Photostory - COM322 Assessment (Story 2)
 
“A NOSSA CA(U)SA”. .
“A NOSSA CA(U)SA”.                      .“A NOSSA CA(U)SA”.                      .
“A NOSSA CA(U)SA”. .
 
(T.L.E.) Agriculture: Essentials of Gardening
(T.L.E.) Agriculture: Essentials of Gardening(T.L.E.) Agriculture: Essentials of Gardening
(T.L.E.) Agriculture: Essentials of Gardening
 
The basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptxThe basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptx
 
How to Install Theme in the Odoo 17 ERP
How to  Install Theme in the Odoo 17 ERPHow to  Install Theme in the Odoo 17 ERP
How to Install Theme in the Odoo 17 ERP
 
Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...
Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...
Understanding and Interpreting Teachers’ TPACK for Teaching Multimodalities i...
 
Views in Odoo - Advanced Views - Pivot View in Odoo 17
Views in Odoo - Advanced Views - Pivot View in Odoo 17Views in Odoo - Advanced Views - Pivot View in Odoo 17
Views in Odoo - Advanced Views - Pivot View in Odoo 17
 
Is Email Marketing Really Effective In 2024?
Is Email Marketing Really Effective In 2024?Is Email Marketing Really Effective In 2024?
Is Email Marketing Really Effective In 2024?
 
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
 
Book Allied Health Sciences kmu MCQs.docx
Book Allied Health Sciences kmu MCQs.docxBook Allied Health Sciences kmu MCQs.docx
Book Allied Health Sciences kmu MCQs.docx
 
Principles of Roods Approach!!!!!!!.pptx
Principles of Roods Approach!!!!!!!.pptxPrinciples of Roods Approach!!!!!!!.pptx
Principles of Roods Approach!!!!!!!.pptx
 
L1 L2- NLC PPT for Grade 10 intervention
L1 L2- NLC PPT for Grade 10 interventionL1 L2- NLC PPT for Grade 10 intervention
L1 L2- NLC PPT for Grade 10 intervention
 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 
Ardra Nakshatra (आर्द्रा): Understanding its Effects and Remedies
Ardra Nakshatra (आर्द्रा): Understanding its Effects and RemediesArdra Nakshatra (आर्द्रा): Understanding its Effects and Remedies
Ardra Nakshatra (आर्द्रा): Understanding its Effects and Remedies
 
NLC English 7 Consolidation Lesson plan for teacher
NLC English 7 Consolidation Lesson plan for teacherNLC English 7 Consolidation Lesson plan for teacher
NLC English 7 Consolidation Lesson plan for teacher
 
matatag curriculum education for Kindergarten
matatag curriculum education for Kindergartenmatatag curriculum education for Kindergarten
matatag curriculum education for Kindergarten
 
AI Risk Management: ISO/IEC 42001, the EU AI Act, and ISO/IEC 23894
AI Risk Management: ISO/IEC 42001, the EU AI Act, and ISO/IEC 23894AI Risk Management: ISO/IEC 42001, the EU AI Act, and ISO/IEC 23894
AI Risk Management: ISO/IEC 42001, the EU AI Act, and ISO/IEC 23894
 
Webinar Innovative assessments for SOcial Emotional Skills
Webinar Innovative assessments for SOcial Emotional SkillsWebinar Innovative assessments for SOcial Emotional Skills
Webinar Innovative assessments for SOcial Emotional Skills
 
Split Shifts From Gantt View in the Odoo 17
Split Shifts From Gantt View in the  Odoo 17Split Shifts From Gantt View in the  Odoo 17
Split Shifts From Gantt View in the Odoo 17
 
How to Configure Time Off Types in Odoo 17
How to Configure Time Off Types in Odoo 17How to Configure Time Off Types in Odoo 17
How to Configure Time Off Types in Odoo 17
 

TDC2018SP | Trilha .Net - Novidades do C# 7 e 8

  • 1. w w w. l a m b d a 3 . c o m . b r Novidades do C# 7 e 8
  • 2. Giovanni Bassi • Programador • Microsoft MVP • Não gerente • blog.lambda3.com.br, podcast.lambda3.com.br, dotnetarchitects.net, nodebr, dockersp @giovannibassi /giggio.tech • Escalador e ciclista
  • 4. podcast.lambda3.com.br 0 – Eventos 1 – Docker 2 – .NET Core RC2 3 – Git 4 – Estudo 5 – Open Source 6 – Xamarin 7 – Node.js 8 – Democracia organizacional 9 – O programador poliglota ... Toda semana em:
  • 6. Acreditamos que a diversidade, em suas diversas expressões, deve ser respeitada e valorizada, e que uma sociedade mais diversa é uma sociedade melhor. diversidade.tech
  • 10. Código gerenciado Generics Language Integrated Query Dinamismo + paridade nas linguagens C# 5 + VB 11 Programação assíncrona C# 1 + VB 7 C# 2 + VB 8 C# 3 + VB 9 C# 4 + VB 10 C# 6 + VB 14 Roslyn
  • 11. Código gerenciado Generics Language Integrated Query Dinamismo + paridade nas linguagens C# 5 + VB 11 Programação assíncrona C# 1 + VB 7 C# 2 + VB 8 C# 3 + VB 9 C# 4 + VB 10 C# 6 + VB 14 Roslyn C# 7 + VB 15 Features!
  • 12. Código gerenciado Generics Language Integrated Query Dinamismo + paridade nas linguagens C# 5 + VB 11 Programação assíncrona C# 1 + VB 7 C# 2 + VB 8 C# 3 + VB 9 C# 4 + VB 10 C# 6 + VB 14 Roslyn C# 7 + VB 15 Features! Features! Features!Features!
  • 13. Código gerenciado Generics Language Integrated Query Dinamismo + paridade nas linguagens C# 5 + VB 11 Programação assíncrona C# 1 + VB 7 C# 2 + VB 8 C# 3 + VB 9 C# 4 + VB 10 C# 6 + VB 14 Roslyn C# 7 + VB 15 Features! Features! Features! Features (parte 2)? C# 8 + VB 16?
  • 16. F# 10,000’s Tens of thousands VB 100,000’s Hundreds of thousands C# 1,000,000’s Millions
  • 21. public static int DiceSum(IEnumerable<object> values) { var sum = 0; foreach (var item in values) { if (item is int val) sum += val; else if (item is IEnumerable<object> subList) sum += DiceSum(subList); } return sum; } https://docs.microsoft.com/dotnet/csharp/pattern-matching http://bit.ly/cspatternmatching
  • 22. https://docs.microsoft.com/dotnet/csharp/pattern-matching public static int DiceSum(IEnumerable<object> values) { var sum = 0; foreach (var item in values) { switch (item) { } } return sum; } http://bit.ly/cspatternmatching
  • 23. case 0: break; case int val: sum += val; break; case PercentileDie die: sum += die.Multiplier * die.Value; break; https://docs.microsoft.com/dotnet/csharp/pattern-matching public static int DiceSum(IEnumerable<object> values) { var sum = 0; foreach (var item in values) { switch (item) { } } return sum; } http://bit.ly/cspatternmatching
  • 24. case 0: break; case int val: sum += val; break; case PercentileDie die: sum += die.Multiplier * die.Value; break; https://docs.microsoft.com/dotnet/csharp/pattern-matching case IEnumerable<object> subList when subList.Any(): sum += DiceSum(subList); break; case IEnumerable<object> subList: break; case null: break; default: throw new InvalidOperationException("unknown"); public static int DiceSum(IEnumerable<object> values) { var sum = 0; foreach (var item in values) { switch (item) { } } return sum; } http://bit.ly/cspatternmatching
  • 25. var numbers1 = (1, 2); var objs = ("1", 2); WriteLine($"{numbers1.Item1}, {numbers1.Item2}"); (int one, int two) numbers2 = (1, 2); WriteLine($"{numbers2.Item1}, {numbers2.Item2}"); WriteLine($"{numbers2.one}, {numbers2.two}"); var numbers3 = (one: 1, two: 2); WriteLine($"{numbers3.one}, {numbers3.two}"); (int uno, int due) numbers4 = (one: 1, two: 2); WriteLine($"{numbers4.uno}, {numbers4.due}"); // WriteLine($"{numbers4.one}, {numbers4.two}"); // error https://docs.microsoft.com/dotnet/csharp/tuples http://bit.ly/cstuplas
  • 26. void M() { var (name, company) = Person.Get(); WriteLine($"{name}, {company}"); } class Person { public string Name { get; set; } public string Company { get; set; } public void Deconstruct(out string name, out string company) { name = Name; company = Company; } public static Person Get() => new Person { Name = "…", Company = "…" }; } https://docs.microsoft.com/dotnet/csharp/tupleshttp://bit.ly/cstuplas
  • 27. var numbers = (one: 1, two: 2); var (uno, due) = numbers; WriteLine($"{uno}, {due}"); https://docs.microsoft.com/dotnet/csharp/tuples http://bit.ly/cstuplas
  • 28. if (int.TryParse("1", out int result)) WriteLine(result); if (int.TryParse("1", out var result2)) WriteLine(result2); https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#out-variables http://bit.ly/csoutvars
  • 29. (int x, int y) GetCoordinates() => (1, 2); var (_, y) = GetCoordinates(); https://docs.microsoft.com/dotnet/csharp/discards http://bit.ly/csdiscards
  • 30. void ObjectDeconstruction() { var (name, _) = Person.Get(); } https://docs.microsoft.com/dotnet/csharp/discards http://bit.ly/csdiscards
  • 31. if (int.TryParse("1", out _)) WriteLine("It is a number!"); https://docs.microsoft.com/dotnet/csharp/discards http://bit.ly/csdiscards
  • 32. object o = 1; if (o is Person p) WriteLine(p.Company); else if (o is null) WriteLine("null"); else if (o is var _) WriteLine("Unknown"); https://docs.microsoft.com/dotnet/csharp/discards http://bit.ly/csdiscards
  • 33. ref int Find(int[,] matrix, Func<int, bool> predicate) { for (int i = 0; i < matrix.GetLength(0); i++) for (int j = 0; j < matrix.GetLength(1); j++) if (predicate(matrix[i, j])) return ref matrix[i, j]; throw new InvalidOperationException("Not found"); } https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#ref-locals-and-returns http://bit.ly/csreflocals
  • 34. void M() { var matrix = new [,] { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 42, 10 } }; ref var item = ref Find(matrix, val => val == 42); WriteLine(item); item = 24; WriteLine(matrix[1, 3]); } https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#ref-locals-and-returns http://bit.ly/csreflocals
  • 35. public ExpressionBodiedMembers(string name) => Name = name; ~ExpressionBodiedMembers() => WriteLine("Finalized!"); private string name; public string Name { get => name; set => name = value; } https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#more-expression-bodied-members http://bit.ly/csmaisebm
  • 36. private string a = GetA() ?? throw new Exception(); private static string GetA() => throw new Exception(); https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#throw-expressions http://bit.ly/csexpthrow
  • 37. int sixteen = 0b0001_0000; int thirtyTwo = 0b0010_0000; int sixtyFour = 0b0100_0000; int oneHundredTwentyEight = 0b1000_0000; long oneHundredBillions = 100_000_000_000; double AvogadroConstant = 6.022_140_857_747_474e23; decimal GoldenRatio = 1.618_033_988_749M; https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#numeric-literal-syntax-improvements http://bit.ly/csnumlit
  • 38. double Average(IEnumerable<int> ns) { double Divide(double a, double b) { if (b == 0) throw new DivideByZeroException(); return a / b; } var sum = ns.Sum(); return Divide(sum, ns.Count()); } https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#local-functions http://bit.ly/cslocalfunc
  • 39. void Add1AndSumAll(int[] ms) { IEnumerable<int> Sum1(IEnumerable<int> ns) { foreach (var n in ns) yield return n + 1; } if (ms == null) throw new NullReferenceException(); WriteLine(Sum1(ms).Sum()); } https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#local-functions http://bit.ly/cslocalfunc
  • 40. public async ValueTask<int> Get5() { await Task.Delay(100); return 5; } https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#generalized-async-return-types http://bit.ly/csasyncgeneral
  • 41. public async ValueTask<int> SumAsync(IEnumerable<ValueTask<int>> ns) { var sum = 0; foreach (var nTask in ns) { var n = await nTask; sum += n; } return sum; } https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7#generalized-async-return-types http://bit.ly/csasyncgeneral
  • 43. var x = (f1: 1, f2: 2); var tuple = (x.f1, x.f2, x); https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7-1#inferred-tuple-element-names http://bit.ly/cstuplainfer
  • 44. Func<string, bool> predicate = default; int i = default; N(default); https://docs.microsoft.com/dotnet/csharp/programming-guide/statements-expressions-operators/default-value-expressions http://bit.ly/csliteraldefault
  • 45. (int, int) N(int[] ns = default) => default; string O() { return default; } T P<T>() { T t = default; return t; } https://docs.microsoft.com/dotnet/csharp/programming-guide/statements-expressions-operators/default-value-expressions http://bit.ly/csliteraldefault
  • 46. static async Task<int> Main(string[] args) { await Task.Delay(500); WriteLine("Done"); return 0; } https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-7-1#async-main http://bit.ly/csasyncmain
  • 48. void M(int i, int j) { } void N() { M(i: 2, 3); } https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/non-trailing-named-arguments.md http://bit.ly/csntna
  • 49. var m = 0b_101; //5 var n = 0x_00C0; // 192 https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/leading-separator.md http://bit.ly/cs_num
  • 50. class Base { private protected int f; } class DerivedInSameAssembly : Base { void M() { var x = base.f; } } class DerivedInOtherAssembly : Base { void M() { var x = base.f; //error } } https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/private-protected.md http://bit.ly/csprpr
  • 51. Vector Add(in Vector v1, in Vector v2) { v1 = default(Vector); // not OK!! v1.X = 0; // not OK!! Foo(ref v1.X); // not OK!! // OK: return new Vector(v1.X +v2.X, v1.Y + v2.Y); } https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types http://bit.ly/csmodin
  • 52. https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/readonly-ref.md#refin-extension-methods public static Ponto Soma(in this Ponto p1, in Ponto p2) => new Ponto(p1.X + p2.X, p1.Y + p2.Y); void In() { Ponto p1 = new Ponto(1, 2), p2 = new Ponto(3, 4); var pResultado = p1.Soma(p2); var pResultado2 = p1.Soma(new Ponto(3, 4)); var pResultado3 = new Ponto().Soma(new Ponto(3, 4)); } http://bit.ly/csmodin
  • 53. public static Ponto Subtrai(ref this Ponto p1, ref Ponto p2) => new Ponto(p1.X - p2.X, p1.Y - p2.Y); void Ref() { Ponto p1 = new Ponto(1, 2), p2 = new Ponto(3, 4); var pResultado = p1.Subtrai(ref p2); p1.Subtrai(ref new Ponto()); // não compila new Ponto().Subtrai(ref p1); // não compila } https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/readonly-ref.md#refin-extension-methods http://bit.ly/csextref
  • 55. ref readonly Vector FetchOrigin() => ref origin; void M() { var v1 = new Vector(1, 2, 3); var v2 = new Vector(4, 5, 6); var vSum = Add(v1, v2); ref readonly var origin = ref FetchOrigin(); } private readonly Vector origin = new Vector(0, 0, 0); https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types http://bit.ly/csretrefro
  • 56. ref readonly var origin = ref FetchOrigin(); var origin2 = FetchOrigin(); // copy created https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types http://bit.ly/csretrefro
  • 57. readonly struct Ponto { public Ponto(float x, float y) { X = x; Y = y; } public float X { get; } public float Y { get; } private readonly static Ponto origem = new Ponto(); public static ref readonly Ponto Origem => ref origem; } https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types#readonly-struct-type http://bit.ly/csrostruct
  • 58. ref readonly var p = ref Ponto.Origem; var x = p.X; // sem cópia https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types#readonly-struct-type http://bit.ly/csrostruct
  • 59. ref int M() { var arr = new[] { 1, 2, 3 }; var otherArr = new[] { 4, 5, 6 }; ref var r = ref (arr != null ? ref arr[0]: ref otherArr[0]); Foo(ref (arr != null ? ref arr[0]: ref otherArr[0])); (arr != null ? ref arr[0]: ref otherArr[0]) = 1; return ref (arr != null ? ref arr[0]: ref otherArr[0]); } void Foo(ref int i) => i = 42; https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/conditional-ref.md http://bit.ly/csternarioref
  • 60. ref struct TwoSpans<T> { // pode ter campos desde que não sejam classes public Span<T> first; public Span<T> second; } // erro: arrays of ref-like types are not allowed. TwoSpans<int>[] arr = null; https://docs.microsoft.com/en-us/dotnet/csharp/reference-semantics-with-value-types#ref-struct-type
  • 61. readonly ref struct ReadOnlyRefPoint2D { public int X { get; } public int Y { get; } public ReadOnlyRefPoint2D(int x, int y) => (X, Y) = (x, y); } https://docs.microsoft.com/dotnet/csharp/reference-semantics-with-value-types#readonly-ref-struct-type
  • 62. void M() { Span<int> arr = stackalloc int[3]; } https://msdn.microsoft.com/en-us/magazine/mt814808.aspx Não é unsafe
  • 64. Span<int> RowFive = new Span<int>(PascalsTriangle, 10, 5); fixed (int* ptrToRow = RowFive) { // Soma os números 1,4,6,4,1 var sum = 0; for (int i = 0; i < RowFive.Length; i++) { sum += *(ptrToRow + i); } Console.WriteLine(sum); } https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/pattern-based-fixed.md int[] PascalsTriangle = { 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, 1, 5, 10, 10, 5, 1 }; Span<T>.GetPinnableReference()
  • 65. unsafe struct S { public fixed int myFixedField[10]; } class C { private static S s = new S(); unsafe public void M() { int p = s.myFixedField[5]; } } https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7-3#indexing-fixed-fields-does-not-require-pinning // CSharp 7.2 fixed (int* ptr = s.myFixedField) { int p = ptr[5]; }
  • 66. var structs = new StructGrande[] { new StructGrande(), new StructGrande() }; ref StructGrande refLocal = ref structs[0]; refLocal = ref structs[1]; https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7-3#ref-local-variables-may-be-reassigned
  • 67. unsafe void M() { int* pArr = stackalloc int[3] { 1, 2, 3 }; int* pArr2 = stackalloc int[] { 1, 2, 3 }; Span<int> arr = stackalloc[] { 1, 2, 3 }; } https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7-3#stackalloc-arrays-support-initializers
  • 68. unsafe public static byte[] ToByteArray<T> (this T argument) where T : unmanaged { var size = sizeof(T); var result = new byte[size]; byte* p = (byte*)&argument; for (var i = 0; i < size; i++) result[i] = *p++; return result; } https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters#unmanaged-constraint
  • 69. public static TDelegate TypeSafeCombine<TDelegate> (this TDelegate source, TDelegate target) where TDelegate : System.Delegate => System.Delegate.Combine(source, target) as TDelegate; Action first = () => Console.WriteLine("this"); Action second = () => Console.WriteLine("that"); var combined = first.TypeSafeCombine(second); combined(); https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters#delegate-constraints
  • 70. public static Dictionary<int, string> EnumNamedValues<T>() where T : System.Enum { var result = new Dictionary<int, string>(); var values = Enum.GetValues(typeof(T)); foreach (int item in values) result.Add(item, Enum.GetName(typeof(T), item)); return result; } enum Rainbow { Red, Orange, Yellow, Green, Blue, Indigo, Violet } var map = EnumNamedValues<Rainbow>(); foreach (var pair in map) Console.WriteLine($"{pair.Key}:t{pair.Value}"); https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters#enum-constraints
  • 72. https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/expression-variables-in-initializers.md var query = from text in strings select int.TryParse(text, out int value) ? value : (int?)null;
  • 73. public class Foo { protected Foo(out int i) => i = 1; } public class Bar : Foo { public int Value { get; } public Bar() : base(out int value) => Value = value; } https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/expression-variables-in-initializers.md
  • 74. public class Baz { private readonly int field1 = int.TryParse(SomeStatic.Text, out int value) ? Value : -1; } https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/expression-variables-in-initializers.md
  • 77. public class Cartesian { public int X { get; } public int Y { get; } } public class Polar { public static bool operator is(Cartesian c, out double R, out double Theta) { R = Math.Sqrt(c.X * c.X + c.Y * c.Y); Theta = Math.Atan2(c.Y, c.X); return c.X != 0 || c.Y != 0; } } void M() { var c = new Cartesian(3, 4); if (c is Polar(var R, _)) WriteLine(R); } https://github.com/dotnet/csharplang/blob/master/proposals/patterns.md
  • 78. void N(string? aNullableString, bool condition) { WriteLine(aNullableString.Length); // warning if (aNullableString != null) WriteLine(aNullableString); // no warning if (!string.IsNullOrWhiteSpace(aNullableString)) WriteLine(aNullableString!.Length); // I know better var anotherNullableString = condition ? "Hello" : aNullableString; WriteLine(anotherNullableString.Length); // warning var yetAnotherNullableString = condition ? "Hello" : null; WriteLine(yetAnotherNullableString.Length); // warning string nonNullableString = null; //warning WriteLine(nonNullableString); // no warning } https://github.com/dotnet/csharplang/blob/master/proposals/nullable-reference-types.md https://github.com/dotnet/roslyn/blob/features/NullableReferenceTypes/docs/features/NullableReferenceTypes/README.md
  • 79. async Task M() { foreach await (var i in GetStream()) WriteLine(i); } IAsyncEnumerable<int> GetStream() => new[] { 1, 2, 3 }.ToAsyncEnumerable(); async IAsyncEnumerable<int> MyIterator() { for (int i = 0; i < 100; i++) { await Task.Delay(1000); yield return i; } } https://github.com/dotnet/csharplang/blob/master/proposals/async-streams.md
  • 80. using await (IAsyncDisposable resource = await store.GetRecordAsync(…)) { … } class Foo : IAsyncDisposable { public async Task DisposeAsync() { await ... } } https://github.com/dotnet/csharplang/blob/master/proposals/async-streams.md
  • 81. interface I { void M() { WriteLine("I.M"); } } class C : I { } // OK void M() { I i = new C(); i.M(); // prints "I.M" } https://github.com/dotnet/csharplang/blob/master/proposals/default-interface-methods.md
  • 82. Dictionary<string, List<int>> field = new() { { "item1", new() { 1, 2, 3 } } }; XmlReader.Create(reader, new() { IgnoreWhitespace = true }); https://github.com/dotnet/csharplang/blob/master/proposals/target-typed-new.md
  • 83. // list[Index.CreateFromEnd(1)] var ultimoItem = list[^1]; // list[Index.CreateFromEnd(2)] var penultimoItem = list[^2]; // list[3, Index.CreateFromEnd(2)] var multiDimensional = list[3, ^2]; https://github.com/dotnet/csharplang/blob/master/proposals/ranges.md
  • 84. // list[Range.Create(2, Index.CreateFromEnd(3))] var slice1 = list[2..^3]; // list[Range.ToEnd(Index.CreateFromEnd(3))] var slice2 = list[..^3]; // list[Range.FromStart(2)] var slice3 = list[2..]; // list[Range.All] var slice4 = list[..]; // list[Range.Create(1, 2), Range.All] var multiDimensional = list[1..2, ..] https://github.com/dotnet/csharplang/blob/master/proposals/ranges.md
  • 85. class Person : IEquatable<Person> { public string First { get; } public string Last { get; } public Person(string First, string Last) => (this.First, this.Last) = (First, Last); public void Deconstruct(out string First, out string Last) => (First, Last) = (this.First, this.Last); public bool Equals(Person other) => other != null && First == other.First && Last == other.Last; public override bool Equals(object obj) => obj is Person other ? Equals(other) : false; public override int GetHashCode() => GreatHashFunction(First, Last); … } class Person(string First, string Last); https://github.com/dotnet/csharplang/blob/master/proposals/records.md
  • 86. extension class Enrollee extends Person { // static field static Dictionary<Person, Professor> enrollees = new Dictionary<Person, Professor>(); // instance method public void Enroll(Professor supervisor) { enrollees[this] = supervisor; } // instance property public Professor Supervisor => enrollees.TryGetValue(this, out var supervisor) ? supervisor : null; // static property public static ICollection<Person> Students => enrollees.Keys; // instance constructor public Person(string name, Professor supervisor) : this(name) { this.Enroll(supervisor); } } https://github.com/dotnet/csharplang/issues/192
  • 87. public shape SGroup<T> { static T operator +(T t1, T t2); static T Zero { get; } } https://github.com/dotnet/csharplang/issues/164
  • 88. public static AddAll<T>(T[] ts) where T : SGroup<T> { var result = T.Zero; foreach (var t in ts) { result += t; } return result; } https://github.com/dotnet/csharplang/issues/164
  • 89. public shape SGroup<T> { static T operator +(T t1, T t2); static T Zero { get; } } https://github.com/dotnet/csharplang/issues/164
  • 91. w w w. l a m b d a 3 . c o m . b r Obrigado! Giovanni Bassi @giovannibassi /giggio.tech