using System;
public class C {
public void M() {
}
}
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
public class C
{
public void M()
{
}
}
VB.NET を選んで表示される C# Decompile 結果は C# とほぼ同じですね。
Imports System
Public Class C
PublicSub M()EndSubEnd Class
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyVersion("0.0.0.0")]
public class C
{
public void M()
{
}
}
F# だとガラッと雰囲気違うのは興味深いです。
openSystemtypeC()=member this.M()=()
using Microsoft.FSharp.Core;
using System;
using System.Reflection;
[assembly: FSharpInterfaceDataVersion(2, 0, 0)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilationMapping(SourceConstructFlags.Module)]
public static class _
{
[Serializable]
[CompilationMapping(SourceConstructFlags.ObjectType)]
public class C
{
public C()
{
((object)this)..ctor();
}
public void M()
{
}
}
}
namespace <StartupCode$_>
{
internal static class $_
{
}
}
using System;
// Run mode:
// value.Inspect() — often better than Console.WriteLine
// Inspect.Heap(object) — structure of an object in memory (heap)
// Inspect.Stack(value) — structure of a stack value
public static class Program {
public static void Main() {
Console.WriteLine("🌄");
new [] {"hoge", "moge"}.Inspect();
Inspect.Heap(new [] {"pi", "yo"});
Inspect.Stack(new [] {1, 2});
}
}
public static class Program {
public static void Main() {
var s = new S();
s.text = "before";
s.num = 1;
var t = s.text;
var h = s;
h.num = 2;
s.text = "after";
Inspect.MemoryGraph(s, t, h);
}
struct S
{
public string text;
public int num;
}
}
public static class Program {
public static void Main() {
var s = new S();
s.text = "before";
s.num = 1;
var t = s.text;
var h = s;
h.num = 2;
s.text = "after";
Inspect.MemoryGraph(s, t, h);
}
class S
{
public string text;
public int num;
}
}
Microsoft.Azure.Storage splits libraries to three parts, Blob, Queue and File, which means we can install separate package instead of the full edition
Microsoft.Azure.Storage doesn't support Table API, it is transferred to Microsoft.Azure.CosmosDB.Table, which is only for .NET Framework right now
Microsoft.Azure.Storage added NetStandard2.0 target support since 9.4.0-preview, which supports synchronous methods wrapped over the asynchronous APIs. WindowsAzure.Storage on NetStandard only has asynchronous APIs
Microsoft.Azure.Storage v9.4 package moves back to use Microsoft.WindowsAzure.Storage namespace temporarily to ease the transition for existing libraries
The Microsoft Azure Storage Common SDK for .NET is referenced by Azure Storage Blob/Queue/File SDKs and Azure CosmosDB Table SDK and should not be referenced directly by your application.