►
From YouTube: .NET Design Reviews GitHub Triage
Description
00:-04:-40 - Approved: Add StringBuilder.Equals(string) to efficiently compare a StringBuilder with a string. https://github.com/dotnet/corefx/issues/25846#issuecomment-354837835
00:15:54 - Approved: Add MemberInfo.IsCollectible & Assembly.IsCollectible https://github.com/dotnet/corefx/issues/25671#issuecomment-354839520
00:23:02 - Needs Work: XPathNodeIterator should implement IEnumerable(XPathNavigator) https://github.com/dotnet/corefx/issues/1593#issuecomment-354841164
00:32:14 - Approved: X509Certificate GetCertHash and GetCertHashString with SHA256 https://github.com/dotnet/corefx/issues/16493#issuecomment-354843685
D
Okay,
so
string
builders,
you
may
or
may
not
know
as
horrendous
performance
when
you
iterate
over
it
with
the
indexer,
because
it's
chunky-
and
this
is
a
pair
of
failure-
that
people
fall
into
logic.
Msbuild,
for
example,
was
comparing
a
string
builder,
the
strength
this
over
there
in
turn
start
and
when
the
string
gets
to
the
tens
of
thousands
of
characters
it
becomes
pathologically
slow,
so
I
initially
tried
to
find
a
way
to
make
indexing
more
efficient
and
there
is
a
way,
but
yarn
suggested
this
wasn't
worth
it
so
I
think.
D
D
Seen
the
use
case
for
that,
like
I,
guess
you
could
well,
how
do
you
compare
what
they
mean?
Maybe
should
be
ordinal
comparison.
This
is
literally
it's
the
same
if,
in
other
words,
if
you
scroll
down
slightly
and
you
scroll
down
like
three
lines,
that's
what
the
implementation
would
be
equivalent
to
I'll.
E
C
D
Comparison
manually
or
okay,
so
what
they
wanted
to
do
was
decide
whether
they
already
had
the
string
in
turn
before
the
native
strings
another,
and
to
do
that
they
were
literally
you
know
for
all
over
the
contents
of
the
table,
okay,
which
you
would
think
is
fast,
but
since
we
made
it
chunky,
it's
not
so
they're,
so
they're,
intern
strings
and
sprinkle.
Mr.
B
E
D
E
F
E
F
E
Mean
I
can
still
do
a
couple
of
quick
checks
of
stringbuilder
equals
strain
with
current
culture
says
is:
is
the
link
that
I'm
going
to
allocate
equal
to
this
guy
nope
nope
they're
anything,
but
when
I'm
doing
a
culture
specific
comparison
is
it
is
it?
Is
it
accurate
to
compare
lengths
like
I,
guess
technically,
if
you're
accepting
an
arbitrary
compare,
they
could
have
done
anything
they
wanted
to.
So
you.
D
D
E
B
E
E
F
D
D
Their
own
custom
in
very
cool.
Oh,
it's
yeah!
It's
totally
custom!
If
you,
if
you're
interested
you
go
to
the
click
on
Pat
load
performances,
how
do
you
think
they're
going
to
be
able
to
improve
the
performance
if
it
is
on
stringer?
It
was
purely
ordinal,
because
the
pathological
part
is
the
stringbuilder.
When
you
ask
for
a
certain
index
has
to
find
the
chunk
it's
in
and
the
way
does
that
is
it
walks
the
link
list
of
chunks?
It
doesn't
have
any.
E
D
B
B
B
D
B
E
Well,
I
guess:
if
ordinal
equals
returns,
true
culture
equals
should
always
return,
always
return
true,
because
the
same
input,
so
you
would
never
get
stringbuilder
equals
returns.
True
and
then
your
custom
comparator
returns
false
unless
it's
doing
stupid
things
like
checking
against
an
intern
to
and
but
you
could
have
shrink
builder
equals
returns
false,
but
to
string
both
sides
equals
returns.
True
right,
that's
right,
I
would
be
upset
if
string
builders
equals
could
return
true,
and
then
the
two
string
would
return
false,
but
that
one
can't
happen
if
we
worked
on.
B
F
F
E
D
E
D
D
E
Of
job
for
you
but
like
if
it
did
something
like
if
it
held
the
strict
so
where
I
was
like
it
just
held
the
original
strength,
and
it's
already
fast
then
like.
If
a
call
to
to
stir
how
I
see
remembered
the
string,
it
did
last
night
just
returns
that
again
it
hasn't
been
modified
yeah.
You
could
do
that,
but
what
I'm
saying
is
compaction
with
the
feet
that
reason
that.
C
B
C
The
argument
was
that
nothing
params
us
in
future
actually
or
we
should
not
impose
the
assembly
information
on
on
developers,
but
in
theory
like
the
collectability,
especially
LC
g,
is
the
property
of
the
member
not
of
the
assembly
like
and
watch
Utley
certain
cases.
The
fact
that's
on
assembly
is
implementation
detail,
but
we
want
to
expose
that
too.
C
B
E
I
mean
I'm
personally
confused
as
to
why
it
belongs
on
two
places.
If
it's
really.
E
C
E
G
E
B
E
F
Impose
now
remember
info
is
basically
the
base
effort
time
there
are
some
other
in
reflection
names
just
like
parameter
info.
It's
not
like
that.
Don't
inherit
from
member
info,
but
there's
a
I,
don't
think
interesting
was
that
again
parameter
opposed
not
doesn't
inherit
from
a
miracle.
I
mean
physically
typing
for
because
they
did
because
an
FF
o
now
is
reversed.
So
this
the
hairs
from
Type
O
would
they
should
be
something
that
we
had
with
this
in
the
new
contract.
B
The
repair
shop
are
you
basically,
the
implication
that
we
have
like
get
type
in
full
and
the
way
it
works
is
causing
issues
because
on
desktop,
basically,
it's
the
same
time
just
cost,
essentially
like
an
outcast
and
then
encore
visually
different
instance
right
because
they
actually
have
a
ever
split
I
forgot
what
this
thing
is,
so
you
basically
have
to
allocate
a
type.
Essentially
you
have
to
wrap
the
other
one
to
get
the
correct,
behavior
husband,
induction.
F
B
B
Will
first
do
a
shortcut
to
say
or
is
it
same
identity
then
I?
Clearly
it's
true
and
then
it
goes
to
the
other
capacity.
Basically,
for
he
says
one.
Yes,
it's.
F
E
E
A
E
C
B
A
C
B
B
E
C
I
E
Innumerable
of
XPath
Navigator,
then
the
only
time
anybody
get
a
benefit
is
if
they
directly
cast
a
tie
and
revolve
XPath
navigator,
which
then
every
derive
types
going
to
have
to
go.
We
explicitly
implement
that
method
if
they
want
so
it's
it
is
it's
doable.
It's
just
your
neural
cost-prohibitive,
I.
B
Mean
like
if
the
base
type
implements
I'm
new
mobile
of
expert
navigator
at
every
derived
class
plus
implements
as
well.
The
problem
is
that
the
way
the
competitors
for
each
is
it
looks
at
the
type
and
checks
for
the
patterns
right,
so
it
says,
like
you,
have
a
getting
rid
our
method,
the
variance
yes.
E
C
The
question
is,
like
you
know,
is
it
easier?
You
know
for
our
more
readable
for
people
to
say
like
for
for
each
X
in
and
explicitly
goes
to
the
iron
numerable
of
T
over
here
and
then
not
cast
inside
versus
having
the
like
for
each
without
the
cast
and
then
cost
kind
of
per
here's.
A
customer
ID
like
either
cost
at
the.
E
C
E
C
B
B
B
B
E
B
F
H
B
B
C
H
E
E
C
I
B
H
B
E
Yeah
yeah
that
was
so
funny
that
you
were
Christoph
would
respond
that
I
could
just
check
it.
I
saw
that
both
of
you
were
in
the
office
today.
He's
had
good
luck
right,
so
we
have
there's
a
couple
different
ways
that
somebody
can
get
a
value
that
we
also
call
thumbprint,
which
is
the
sha-1
hash
of
a
certificate
x.509
certificate.
The
base
class
exposes
it
through
a
byte
array
method,
a
string,
string
method
gets
or
a
she
gets,
or
hash
string
x.509
certificate
to
exposes.
E
F
E
E
You
said
on
certificate:
we
already
have
it
essentially.
X.509
certificate
has
the
property
thumbprint,
which
returns
as
the
string
of
the
binary
dope
number,
but
since
it's
a
property,
I
can't
take
a
parameter,
and
so
it's
just
that
getting
afraid.
Well,
we'll
have
to
mark
that
one
with
that.
Please
go
call
this
other
method.
You
said
yeah.
H
C
G
E
E
You're,
either
not
allowed
to
dispose
the
library
once
you've
loaded
it
or
we
to
somehow
make
delegates
be
smart
and
make
them
throw
a
oh,
my
god,
someone
unloaded
this
library
out
from
under
me
exception,
but
we
cannot
have
a
thing
that
lets
you
easily
create
function,
calls
pointing
to
addresses
that
then
got
disposed
and
reclaimed
and
are
now
doing
whatever
the
hell
that
you
like
do
it.
This
is
just
no
is
that
a
policy
that
do
we
define
easily
someone.
D
E
E
You
write
the
PM
vote
is
down.
You
can't
download
it
so
good
solution
over
here,
we're
saying,
basically,
you
cannot
unload
it
right.
So
if
you
can't
ever
unload
these
native
library
things,
then
we
find
the
delegate
would
be
bound
with
the
map
to
be
in
proc.
You
have
to
do
all
sorts
of
crazy
piano
garbage
done
with
the
library
out
under
it
and
sort
of
do
it
yourself.
This
is
that,
like
you,
can
technically
I
won't
see
how
our
from
the
CLR
for
what
so.
E
Letting
something
like
having
using
like
I
can
certainly
see
somebody
trying
to
write
the
code
using
this
native
library
go
return
this
function
and
so
you've
never
turned
to
delegate
out.
Well,
you
just
have
loaded
the
library
whenever
somebody
in
folks
that
delegate
you're
now
executing
on
it.
Okay.
B
I
C
E
B
This
is
yeah,
there
was
some
and
some
security
fix
that
remember
a
few
months
here
and
I
think
the
problem
that
they
want
to
avoid
is
that
if
you
so
the
basic
default
looks
like
this
right.
The
type
is
not
threats
a
generally
speaking,
but
you
want
to
avoid
a
situation
where
read
you.
You
have
a
threading
over
yeah
yeah,
okay,
it's
true
and
then
basically
you,
they
see
the
same
immutable
data
times
where
the
ideas,
if
you
buy
less
thread
safety
of
the
builders.
B
D
B
That
tuber
enacted,
for
example,
let's
say
you
have
two
two
threads
fighting
on
the
same
string
builder
and
calling
effectively
to
string.
You
should
never
be
able
to
get
once
again
a
string.
You
should
never
have
a
black
interpreter
that
could
cause
you,
that
instance,
to
change
ever
because
that
may
be
a
security
bug
to
courts.
The
string
itself
to
get
and
select
that's
why?
B
B
You
do
what
I
mean.
Thank
you,
like
is
the
stream
brothers
underlying
array
right.
That
said,
the
array
has
the
right
sides
right.
You
could
potentially,
assuming
you
just
point
to
the
array
and
what
ironic
start
the
string
out
of
them.
If
you
actually
just
copy
memory,
then
it's
fine,
but
it
all.
You
double
erased.
I,
for
example,
the
Builder
actually
use
the
annoying
array
and
shove
it
in
the
blu-ray
in
particular
string
builder.
That
removes.