rksoftware

Visual Studio とか C# とかが好きです

秋葉原 C# もくもく会 #22 勉強会を開催しました。

■ C# もくもく会

C# もくもく会 #22 を開催しました。

C# もくもく会 は東京の秋葉原で毎週木曜日に開催している .NET 系の勉強会です。
もくもく自習を基本とし、分からないことを教えあったり情報共有したりしている会です。

定期開催していますので、お時間のある時に遊びに来ていただければと思います。
ちょっと詰まった時、ネット上で聞くのははずかしいなぁ、という課題のできた時などにも思い出していただけると嬉しいです。

■ 次回予定

次回は 2018/01/25 に開催予定です。

.NET に関心のある方、是非遊びに来てください。

城東.NET #16 勉強会で話をしてきました

先日開催した

にて先月に続いて同じ内容ですが C# 7.2 の新機能 というタイトルで話をしました。

最近の Visual Studio のアップデートで使えるようになった C# 7.2 の機能を確認した内容の共有です。

■ 次回予定

来月は 02月21日(水)に開催の予定です。

.NET に関心のある方、是非遊びに来てください。

城東.NET #16 勉強会を開催しました。

■ 城東.NET

城東.NET #16 を開催しました。

城東.NET は東京の最近は秋葉原で毎月第3水曜日に開催している .NET 系の勉強会です。
発表を中心として、発表でなくとも最近やった事や新しい情報などを参加者で共有している会です。

■ 次回予定

来月は 02月21日(水)に開催の予定です。

.NET に関心のある方、是非遊びに来てください。

foreach で index。 for Mac (C# 7)

先日、素晴らしい記事を読んで早速実践導入してみました。

Visual Studio で書いてとてもシンプルにかけて満足していたら...
もくもく会で VS for Mac でエラーになると教えていただきました。
※もくもく会

こんな感じ。
f:id:rksoftware:20180115001826j:plain

Error CS8306: Tuple element name 'xxx' is inferred. Please use language version 7.1 or greater to access an element by its inferred name. (CS8306)

■ 対応方法

・C# 7.1 を使えるようにする
最近の C# はマイナーバージョンがあり、最新のマイナーバージョンは設定をしないと使えません。
プロジェクトのプロパティ > ビルド > 全般 > 言語オプション > C# 言語バージョン
バージョン 7.1 を選択します。
f:id:rksoftware:20180115001847j:plain

■ あきらめる

中には、プロジェクトの設定を変更することが困難な現場の方もいるでしょう。
そういった場合は、素直にレガシーな実装方法にしておくのが無難かもしれません。

foreach (var m in new[] { 1, 2, 3 }.Select((s, i) => new { s, i }))
    Console.WriteLine($"{m.s} {m.i}");

こんな感じに。

とりあえず、おすすめは C# 7.1 を使えるようにする方です。

Xamarin Forms でタイマー処理をする

Xamarin.Forms で一定間隔の時間毎に何か処理をしたい場合、Xamarin.Forms.Device クラスの StartTimer メソッドが使えます。

■ コード

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();

        // UI の構築。StartTimer メソッドの使い方とは関係がない
        var sl = (StackLayout)(this.Content = new StackLayout());
        var label = new Label();
        sl.Children.Add(label);

        // StartTimer メソッドの使い方
        Xamarin.Forms.Device.StartTimer(new TimeSpan(33), ()=>
        {
            label.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:dd.sss");
            return true;
        });
    }
}

実行すると次のように現在日時が表示され、33ミリ秒ごとに更新されます。
f:id:rksoftware:20180114235611j:plain

■ 解説

第一引数
実行の間隔を設定します。ここで設定した間隔ごとに第二引数で設定した処理が実行されます。

第二引数
一定間隔ごとに実行したい処理を設定します。今回はコードを短くするためにラムダ式で記述していますが、メソッドにして OK です。
第二引数の戻り値
第二引数の処理は一定間隔で呼ばれますが、false を return するとタイマーが終了し以降は呼ばれなくなります。
例えば、三回だけ処理を実行したい場合は、三回目に呼ばれた際に false を return すれば OKです。
もし無限に繰り返したい場合は、常に true を return すれば OK です。

秋葉原 C# もくもく会 #21 勉強会を開催しました。

■ C# もくもく会

C# もくもく会 #21 を開催しました。

C# もくもく会 は東京の秋葉原で毎週木曜日に開催している .NET 系の勉強会です。
もくもく自習を基本とし、分からないことを教えあったり情報共有したりしている会です。

定期開催していますので、お時間のある時に遊びに来ていただければと思います。
ちょっと詰まった時、ネット上で聞くのははずかしいなぁ、という課題のできた時などにも思い出していただけると嬉しいです。

■ 次回予定

次回は 2018/01/18 に開催予定です。

.NET に関心のある方、是非遊びに来てください。

Xamarin Forms で画面をスリープしないようにするやつ

Xamarin Forms で画面をスリープしないようにするやつを NuGet にアップしてみました。
NuGet にしたからと言って何か変わるというものではないですが、試してみたくて。

■ 導入方法

NuGet で keepscreen で検索すると出てくると思います。

■ ソース

こういうので動くのかなぁ。というソースです。

今のところ動いています。