Deconstruction is ambiguous Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!Ambiguous call error with overloaded method that takes 2 delegates with different return typesC# overloading ambiguityExtensiong ambiguous errorError CS0121 with double and inthow to fix the error on the Round, what should i change the line to?How can i solve a Math error between decimal and double?Ambiguity with Task.RunMSBuild15 CS0121 ambiguous 'List<T>.List(params T[])' and 'List<T>.List(params List<T>[])'C# deconstruction and overloadsSystem.ObservableExtensions.Subscribe: ambiguous reference
Has negative voting ever been officially implemented in elections, or seriously proposed, or even studied?
How does light 'choose' between wave and particle behaviour?
Antipodal Land Area Calculation
How to identify unknown coordinate type and convert to lat/lon?
Google .dev domain strangely redirects to https
Why can't I install Tomboy in Ubuntu Mate 19.04?
How much damage would a cupful of neutron star matter do to the Earth?
Girl Hackers - Logic Puzzle
Dyck paths with extra diagonals from valleys (Laser construction)
How could we fake a moon landing now?
Significance of Cersei's obsession with elephants?
How often does castling occur in grandmaster games?
An adverb for when you're not exaggerating
How many morphisms from 1 to 1+1 can there be?
Why is it faster to reheat something than it is to cook it?
What does Turing mean by this statement?
Why weren't discrete x86 CPUs ever used in game hardware?
Would it be easier to apply for a UK visa if there is a host family to sponsor for you in going there?
Is there hard evidence that the grant peer review system performs significantly better than random?
Did any compiler fully use 80-bit floating point?
Putting class ranking in CV, but against dept guidelines
Trademark violation for app?
Should a wizard buy fine inks every time he want to copy spells into his spellbook?
Flash light on something
Deconstruction is ambiguous
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!Ambiguous call error with overloaded method that takes 2 delegates with different return typesC# overloading ambiguityExtensiong ambiguous errorError CS0121 with double and inthow to fix the error on the Round, what should i change the line to?How can i solve a Math error between decimal and double?Ambiguity with Task.RunMSBuild15 CS0121 ambiguous 'List<T>.List(params T[])' and 'List<T>.List(params List<T>[])'C# deconstruction and overloadsSystem.ObservableExtensions.Subscribe: ambiguous reference
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have a vector class with two deconstruction methods as follows:
public readonly struct Vector2
public readonly double X, Y;
...
public void Deconstruct( out double x, out double y )
x = this.X;
y = this.Y;
public void Deconstruct( out Vector2 unitVector, out double length )
length = this.Length;
unitVector = this / length;
Somewhere else I have:
Vector2 foo = ...
(Vector2 dir, double len) = foo;
This gives me:
CS0121: The call is ambiguous between the following methods or properties: 'Vector2.Deconstruct(out double, out double)' and 'Vector2.Deconstruct(out Vector2, out double)'
How is this ambiguous?
Edit: Calling Deconstruct manually works fine:
foo.Deconstruct( out Vector2 dir, out double len );
c# c#-7.3
add a comment |
I have a vector class with two deconstruction methods as follows:
public readonly struct Vector2
public readonly double X, Y;
...
public void Deconstruct( out double x, out double y )
x = this.X;
y = this.Y;
public void Deconstruct( out Vector2 unitVector, out double length )
length = this.Length;
unitVector = this / length;
Somewhere else I have:
Vector2 foo = ...
(Vector2 dir, double len) = foo;
This gives me:
CS0121: The call is ambiguous between the following methods or properties: 'Vector2.Deconstruct(out double, out double)' and 'Vector2.Deconstruct(out Vector2, out double)'
How is this ambiguous?
Edit: Calling Deconstruct manually works fine:
foo.Deconstruct( out Vector2 dir, out double len );
c# c#-7.3
If your Vector class had implicit conversion to/from a double, say, then this would be ambiguous.
– Ian Mercer
6 hours ago
add a comment |
I have a vector class with two deconstruction methods as follows:
public readonly struct Vector2
public readonly double X, Y;
...
public void Deconstruct( out double x, out double y )
x = this.X;
y = this.Y;
public void Deconstruct( out Vector2 unitVector, out double length )
length = this.Length;
unitVector = this / length;
Somewhere else I have:
Vector2 foo = ...
(Vector2 dir, double len) = foo;
This gives me:
CS0121: The call is ambiguous between the following methods or properties: 'Vector2.Deconstruct(out double, out double)' and 'Vector2.Deconstruct(out Vector2, out double)'
How is this ambiguous?
Edit: Calling Deconstruct manually works fine:
foo.Deconstruct( out Vector2 dir, out double len );
c# c#-7.3
I have a vector class with two deconstruction methods as follows:
public readonly struct Vector2
public readonly double X, Y;
...
public void Deconstruct( out double x, out double y )
x = this.X;
y = this.Y;
public void Deconstruct( out Vector2 unitVector, out double length )
length = this.Length;
unitVector = this / length;
Somewhere else I have:
Vector2 foo = ...
(Vector2 dir, double len) = foo;
This gives me:
CS0121: The call is ambiguous between the following methods or properties: 'Vector2.Deconstruct(out double, out double)' and 'Vector2.Deconstruct(out Vector2, out double)'
How is this ambiguous?
Edit: Calling Deconstruct manually works fine:
foo.Deconstruct( out Vector2 dir, out double len );
c# c#-7.3
c# c#-7.3
edited 6 hours ago
Chris
asked 6 hours ago
ChrisChris
4,7431025
4,7431025
If your Vector class had implicit conversion to/from a double, say, then this would be ambiguous.
– Ian Mercer
6 hours ago
add a comment |
If your Vector class had implicit conversion to/from a double, say, then this would be ambiguous.
– Ian Mercer
6 hours ago
If your Vector class had implicit conversion to/from a double, say, then this would be ambiguous.
– Ian Mercer
6 hours ago
If your Vector class had implicit conversion to/from a double, say, then this would be ambiguous.
– Ian Mercer
6 hours ago
add a comment |
1 Answer
1
active
oldest
votes
This is by design in C#. Overloads of Deconstruct must have different arity (number of parameters), otherwise they are ambiguous.
Pattern-matching does not have a left-hand-side. More elaborate
pattern-matching scheme is to have a parenthesized list of patterns to
match, and we use the number of patterns to decide which Deconstruct
to use.
- Neal Gafter https://github.com/dotnet/csharplang/issues/1998#issuecomment-438472660
2
That is thoroughly disappointing!
– Chris
6 hours ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55767219%2fdeconstruction-is-ambiguous%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
This is by design in C#. Overloads of Deconstruct must have different arity (number of parameters), otherwise they are ambiguous.
Pattern-matching does not have a left-hand-side. More elaborate
pattern-matching scheme is to have a parenthesized list of patterns to
match, and we use the number of patterns to decide which Deconstruct
to use.
- Neal Gafter https://github.com/dotnet/csharplang/issues/1998#issuecomment-438472660
2
That is thoroughly disappointing!
– Chris
6 hours ago
add a comment |
This is by design in C#. Overloads of Deconstruct must have different arity (number of parameters), otherwise they are ambiguous.
Pattern-matching does not have a left-hand-side. More elaborate
pattern-matching scheme is to have a parenthesized list of patterns to
match, and we use the number of patterns to decide which Deconstruct
to use.
- Neal Gafter https://github.com/dotnet/csharplang/issues/1998#issuecomment-438472660
2
That is thoroughly disappointing!
– Chris
6 hours ago
add a comment |
This is by design in C#. Overloads of Deconstruct must have different arity (number of parameters), otherwise they are ambiguous.
Pattern-matching does not have a left-hand-side. More elaborate
pattern-matching scheme is to have a parenthesized list of patterns to
match, and we use the number of patterns to decide which Deconstruct
to use.
- Neal Gafter https://github.com/dotnet/csharplang/issues/1998#issuecomment-438472660
This is by design in C#. Overloads of Deconstruct must have different arity (number of parameters), otherwise they are ambiguous.
Pattern-matching does not have a left-hand-side. More elaborate
pattern-matching scheme is to have a parenthesized list of patterns to
match, and we use the number of patterns to decide which Deconstruct
to use.
- Neal Gafter https://github.com/dotnet/csharplang/issues/1998#issuecomment-438472660
edited 6 hours ago
answered 6 hours ago
AsikAsik
14.4k349105
14.4k349105
2
That is thoroughly disappointing!
– Chris
6 hours ago
add a comment |
2
That is thoroughly disappointing!
– Chris
6 hours ago
2
2
That is thoroughly disappointing!
– Chris
6 hours ago
That is thoroughly disappointing!
– Chris
6 hours ago
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55767219%2fdeconstruction-is-ambiguous%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
If your Vector class had implicit conversion to/from a double, say, then this would be ambiguous.
– Ian Mercer
6 hours ago