2006年は前述の肘の故障のリハビリと身体作りに専念し実戦登板はなく、シーズン終了後の秋季キャンプでプロ入り後初めてブルペンで捕手相手に投げ込んだ。2007年はウエスタン・リーグで公式戦初登板をしたものの、秋季キャンプで肋骨を疲労骨折。2008年は4月15日に二軍公式戦の広島東洋カープ戦で6回無失点に抑え、二軍戦初勝利を挙げた。4月25日、自身の誕生日に初の一軍昇格も登板機会はなく二軍に戻った。その後、6月15日に再昇格すると同日の対千葉ロッテマリーンズ戦で一軍初登板・初先発をしたが、打者6人に対して被安打5、与四球1の6失点で1つもアウトを取れずに降板。敗戦投手にはならなかったが、翌日に二軍降格した。二軍では年間通して先発ローテーションを守って7勝を挙げ、中日ドラゴンズの佐藤充と並んでウエスタン・リーグ最多勝利のタイトルを獲得。しかし、腰を痛めたために秋季キャンプには参加できなかった。2009年はウエスタン・リーグで17試合に登板して1勝3敗2セーブ、防御率5.00。9月27日に下柳剛と入れ替えで一軍昇格。翌9月28日の東京ヤクルトスワローズ戦で5番手としてシーズン初登板、1回を無失点で抑えた。シーズン後のフェニックスリーグでは3試合に先発して2勝0敗を記録し、平田勝男二軍監督から「今、一軍がシーズン中なら間違いなく、鶴が一軍昇格NO.1候補になっているよ」と評価された。2010年は5月に入ってから一軍で登板するようになり、5月29日の北海道日本ハムファイターズ戦で先発登板すると6回2失点でプロ初勝利・初先発勝利を挙げた。その後8月まで先発ローテーションの一角として活躍していたが、勝ち星は2勝どまり。9月以降は背筋を痛め2軍落ちとなった。2011年も先発ローテーション入りのチャンスは与えられたものの、なかなか結果を残すことができず、夏場に2軍落ちとなった。シーズン終盤に1軍に再昇格し、広島との最終戦で5回を無安打無失点に抑える好投を見せたが、打線の援護が無く、無失点のまま代打を出されたために勝ち星は無く、結局このシーズンは未勝利に終わった。2012年は、安藤優也の復調もあって、先発から中継ぎに転向した。シーズンを通じて一軍に帯同するとともに、自己最多の43試合に登板。チームがリードを許している場面での救援登板が多かったが、2年ぶりの白星を挙げたほか、防御率も1.89を記録した。2013年も前年に続いて、中継ぎ要員として開幕一軍を果たした。開幕後は不調で二軍に降格した時期もあったが、5月14日の福岡ソフトバンクホークス戦では、自己最多タイのシーズン記録となる2勝目を挙げている。その後は、二軍での再調整を経て、8月17日の東京ヤクルトスワローズ戦（京セラドーム大阪）で先発投手として7回を無失点と好投。自己最多のシーズン3勝目を、先発では自身3年振りの勝利で飾った。2014年には、先発陣への定着を目指したが、春季キャンプの後半から中継ぎ要員に再転向。3年連続の開幕一軍を果たしたが、開幕カードの読売ジャイアンツ戦（東京ドーム）に2試合投げただけで、3月31日に登録を抹消された。なお、抹消後は先発要員として再調整。一軍でのシーズン初先発になった5月4日の東京ヤクルトスワローズ戦（神宮）では、6回1失点の好投でシーズン初勝利を挙げた。2015年に一軍公式戦5試合、2016年に2試合登板。いずれも救援要員としての起用だったが、勝敗が付かないまま、2016年10月1日に球団から戦力外通告を受けた。鶴自身は、NPB他球団での現役続行を希望していたことから、2016年11月12日に甲子園球場の12球団合同トライアウトへ参加。シートバッティング形式で対戦した3人の打者を無安打に抑えるとともに、最速144km/hのストレートで2つの三振を奪った。しかし、NPB他球団から獲得のオファーを受けるまでには至らず、現役を引退した。同年12月2日付で、NPBから自由契約選手として公示。
C#における構造体は、軽量のオブジェクトを表す値型である。組み込みの軽量な型 (bool, char, int, double, etc.) もまた構造体である。// 数値リテラルも構造体であり、オブジェクトである。string str = 123.ToString();structキーワードを使用した、ユーザー定義の構造体の例を下に示す。C# 6.0以上を想定している。using System;public struct MutablePoint {    /// <summary>カプセル化されたフィールド。</summary>    private int _x, _y;    /// <summary>X座標を取得・設定するプロパティ。</summary>    public int X {        get => _x;        set => _x = value;    }    /// <summary>Y座標を取得・設定するプロパティ。</summary>    public int Y {        get => _y;        set => _y = value;    }    /// <summary>原点からの距離を取得するプロパティ。</summary>    public double Distance => Math.Sqrt((double)_x * (double)_x + (double)_y * (double)_y);    /// <summary>引数付きコンストラクタ。</summary>    public MutablePoint(int x, int y) {        _x = x;        _y = y;    }    /// <summary>System.ValueTypeのToString()メソッドをオーバーライド。</summary>    public override string ToString() => $"({_x}, {_y})";}class Test {    // フィールドで定義された構造体内の全てのフィールドはデフォルト値0で初期化されている。    static MutablePoint s_point;    static void Main() {        Console.WriteLine(s_point.ToString()); // (0, 0) が表示される。        // デフォルトコンストラクタ呼び出し。        var zeroPoint = new MutablePoint();        Console.WriteLine(zeroPoint.ToString()); // (0, 0) が表示される。        // 引数付きコンストラクタ呼び出し。        var point = new MutablePoint(5, 11);        Console.WriteLine(TranslatePoint(point, 1, -9).ToString()); // (6, 2) が表示される。        Console.WriteLine(point.ToString()); // (5, 11) が表示される。        Console.WriteLine("Press any...");        Console.ReadKey(true);    }    // 構造体型 (値型) は、仮引数に値のコピーが渡されるため、    // メソッド内での仮引数の操作によって呼び出し元の実引数の値が変更されることはない。    // 引数がrefパラメータならば、    // あるいはMutablePoint型がstructではなくclassで宣言されていたならば、    // 仮引数の状態の変更は実引数の状態に影響する。    static MutablePoint TranslatePoint(MutablePoint p, int dx, int dy) {        p.X += dx;        p.Y += dy;        return p;    }}C#のデータ型も参照のこと。C#の構造体は属性によってメモリレイアウトを明示的に指定することができるため、C/C++の構造体との相互運用に便利である。