ブログ 2016/12/22 小ネタ 引数の個数の上限 引数の個数に制限があること、ご存じでしょうか。 むやみに多くても実装上の無駄が大きかったりしますし、上限が決まっていたりします。 C#は意外と大きくて、最大で65536個まで行けます。要するに2バイト分。 ということで、以下のC#コードはコンパイル可能です。 1バイトで収まらない、0~256までの257個の引数。 class Program { static void M( int x0, int x1, int x2, int x3, int x4, int x5, in… 続きを読む 2016/12/21 小ネタ string型のマーシャリング 数値や文字列の内部形式は、プログラミング言語ごとに違っています。プログラミング言語をまたいで値を受け渡しするには、その間に変換処理が必要になります。その変換処理のことをマーシャリング(marshalling: 整列する(特に、指揮官の指示で整列、集結、先導されるような意味あい))と言います。 無変換転送 といっても、変換処理はそれなりに重たい処理なので、異なるプログラミング言語間でも揃えられる限りには同じ形式を使って、そのまま値を渡せるようにしたくなるものです。C#では、Windows AP… 続きを読む 2016/12/20 小ネタ privateメンバーはAPIの一部か ことの発端 なんかぐらばくさんとこので、エラーになるはずのコードがPCLなプロジェクトでだけビルド通ってしまって問題になってたらしい。 要点を抜き出すと以下のような感じ。 using System; struct DateTimeWrapper { DateTimeOffset t; public DateTimeWrapper(int i) { // t を初期化しないとコンパイル エラーになるはず // でも、なぜか PCL プロジ… 続きを読む 2016/12/19 小ネタ プリミティブ型 .NETには「プリミティブ型」とかいうものがあるんですが、 何をもってプリミティブと言えるのか、 どういう型がプリミティブ型なのかというと、 なんかよくわからない存在です。 Type型にIsPrimitiveというプロパティがあって、こいつがtrueを返すものがプリミティブ型なんですが。 以下のコードを見ての通り、どういう基準なのかがパッと見でわからず。 using static System.Console; class Program { static void… 続きを読む 2016/12/18 小ネタ 構文糖衣と、そうではない構文と 構文糖衣が多い言語 C#は構文糖衣が結構多い言語です。 構文糖衣(syntax sugar)っていうのは、要するに、「定型的な長くて面倒なコードにはなるけども、原理的にはその構文がなくても全く同じ意味のコードが書ける」というような類の機能です。 例えばクエリ式がわかりやすいですが、以下の3つの式は全く同じ意味になります。 from x in data where x > 2 select x * x data.Where(x => x > 2).Selec… 続きを読む 新しい投稿へ 過去の投稿へ
2016/12/22 小ネタ 引数の個数の上限 引数の個数に制限があること、ご存じでしょうか。 むやみに多くても実装上の無駄が大きかったりしますし、上限が決まっていたりします。 C#は意外と大きくて、最大で65536個まで行けます。要するに2バイト分。 ということで、以下のC#コードはコンパイル可能です。 1バイトで収まらない、0~256までの257個の引数。 class Program { static void M( int x0, int x1, int x2, int x3, int x4, int x5, in… 続きを読む
2016/12/21 小ネタ string型のマーシャリング 数値や文字列の内部形式は、プログラミング言語ごとに違っています。プログラミング言語をまたいで値を受け渡しするには、その間に変換処理が必要になります。その変換処理のことをマーシャリング(marshalling: 整列する(特に、指揮官の指示で整列、集結、先導されるような意味あい))と言います。 無変換転送 といっても、変換処理はそれなりに重たい処理なので、異なるプログラミング言語間でも揃えられる限りには同じ形式を使って、そのまま値を渡せるようにしたくなるものです。C#では、Windows AP… 続きを読む
2016/12/20 小ネタ privateメンバーはAPIの一部か ことの発端 なんかぐらばくさんとこので、エラーになるはずのコードがPCLなプロジェクトでだけビルド通ってしまって問題になってたらしい。 要点を抜き出すと以下のような感じ。 using System; struct DateTimeWrapper { DateTimeOffset t; public DateTimeWrapper(int i) { // t を初期化しないとコンパイル エラーになるはず // でも、なぜか PCL プロジ… 続きを読む
2016/12/19 小ネタ プリミティブ型 .NETには「プリミティブ型」とかいうものがあるんですが、 何をもってプリミティブと言えるのか、 どういう型がプリミティブ型なのかというと、 なんかよくわからない存在です。 Type型にIsPrimitiveというプロパティがあって、こいつがtrueを返すものがプリミティブ型なんですが。 以下のコードを見ての通り、どういう基準なのかがパッと見でわからず。 using static System.Console; class Program { static void… 続きを読む
2016/12/18 小ネタ 構文糖衣と、そうではない構文と 構文糖衣が多い言語 C#は構文糖衣が結構多い言語です。 構文糖衣(syntax sugar)っていうのは、要するに、「定型的な長くて面倒なコードにはなるけども、原理的にはその構文がなくても全く同じ意味のコードが書ける」というような類の機能です。 例えばクエリ式がわかりやすいですが、以下の3つの式は全く同じ意味になります。 from x in data where x > 2 select x * x data.Where(x => x > 2).Selec… 続きを読む