2016/3/5 VSUG DAY FINAL
Visual Studio 97, Visual Studio 6.0 を経て 2002 年の初めにリリースされた .NET Framework 1.0 と Visual Studio .NET 2002。ここから 10 年以上の歳月が流れる中で .NET と Windows を主な開発プラットフォームとして進化を続けた Visual Studio は、最新版 Visual Studio 2015 で大きく変貌を遂げました。そして、10 周年の VSUG がその役目を終える今、改めて Visual Studio の過去を振り返り、現在を学び、未来に触れてみませんか?
How to make the Fastest C# Serializer, In the case of ZeroFormatterYoshifumi Kawai
?
The document discusses ZeroFormatter, an infinitely fast serializer that avoids common serialization inefficiencies. It provides benchmarks showing ZeroFormatter is faster than standard serializers. ZeroFormatter minimizes abstraction by directly writing to byte arrays without boxing or memory streams. Formatter classes handle different types by directly serializing/deserializing values without intermediate serialization steps. This achieves serialization with minimal overhead and memory allocation.
8. JavaScript のあいまいさを排除し、安全性?可読性?生産性を向上
interface I { }
class C { }
module M { }
{ s: string; }
number[]
() => boolean
// Number
var x: number; // 明示的
var y = 0; // y: number と同じ
// Boolean
var b: boolean; // 明示的
var yes = true; // yes: boolean = true と同じ
// String
var s: string; // 明示的
var n = "akira"; // n: string = "akira" と同じ
// Enum
enum Color { Red, Green, Blue }
var myColor = Color.Red;
Console.log(Color[myColor]); // Red
9. interface, class, namespace などのオブジェクト指向言語構文の導入
interface Dog {
name: string;
Talk: () => string;
}
class Corgi implements Dog {
name: string;
constructor(name: string) {
this.name = name;
}
Talk(): string {
return "Bow wow!";
}
}
class myDog extends Corgi {
constructor() {
super("reo");
}
Talk(): string {
return "Wan wan!";
}
}
namespace M {
export var reo = new myDog();
}
alert(M.reo.Talk());
10. ジェネリクス (Generics) 構文
アロー関数式 (ES2015 匿名関数構文)
Get / Set アクセサ構文 (プロパティ)
class Human<T> { ... }
var me = new Human<string>("Akira");
var a = function (x: number) { return Math.sin(x); } // 標準式
var b = x => Math.sin(x)
class Who {
private _name: string;
get Name() { return this._name; }
set Name(name: string) { this._name = name; }
}