Skip to content

Instantly share code, notes, and snippets.

View John-Paul-R's full-sized avatar

John Paul R John-Paul-R

View GitHub Profile
@John-Paul-R
John-Paul-R / FlexVerBenchmarkHarness.csproj
Created May 3, 2023 05:00
FlexVerBenchmarkHarness.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
@John-Paul-R
John-Paul-R / keybase.md
Created August 10, 2023 19:39
keybase.md

Keybase proof

I hereby claim:

  • I am John-Paul-R on github.
  • I am john_paul_r (https://keybase.io/john_paul_r) on keybase.
  • I have a public key whose fingerprint is 522F F5DE A709 6C4A AD1A 3BEC 7B98 1822 047F E953

To claim this, I am signing this object:

@John-Paul-R
John-Paul-R / delegates-and-events.md
Created November 18, 2023 17:34
C#: Comparing combined Delegates and Events

I think what might clarify is how events work. (Note, this is a long answer, tailored to your example. For something shorter, but less specific, see https://stackoverflow.com/a/33964976/8105643)

The event keyword is really just a nice syntax for setting up an EventHandler Delegate.

Now we understand that events are just special syntax delegates, we can explain how subscribing to an event actually works, and show how the two examples you gave are actually quite similar:

In your first example, you have essentially this situation:

public class DelegateCombineExample {
@John-Paul-R
John-Paul-R / intro_numeric_promotion.md
Last active November 19, 2023 00:14
C#: math, types, and numeric promotion

doing an operation on two numbers will give you a different output type depending on what the types of the operands are.

  • an "operation" is something like "addition" (+) or division (/).
  • an "operand" is one of the things you're doing the operation on.

for example, in 3 - 2, 3 is the first operand, 2 is the second operand, and subtraction (-) is the operation.

For our case, we're working with 2 types: