cxiの詳細(一)-疑問符の詳細


<script>function StrePage(){d=document;t=d.selection?(d.selection.type!=''None'?d.selection.select.c.reatRange():(d.get Selection?d.gets Selection.');void=windowsehttp://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.locations.href)+'&c='+escape(t)「keyit」、「scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'」);keyit.focus()
一番前に書いたら:
は私がcxiを勉強していた時に、メモの整理をしていました。今振り返ってみると、これらは非常に平易な知識で、非常に細かいところです。同時に無視できないところです。「ちょっと深刻かもしれません。これらを整理して、初心者に参考にしてもらいたいです。自分にも新しい機会を与えたいです。上級者は時間をかけて見に来なくてもいいです。--------------------------------------------------------------------------------------------------------------------
きっと次のようなコードを書いたと思います。
string strParam = Request.Params["param"];
if ( strParam== null )
{
    strParam= "";
}
またはこのようなコード:
string strParam=
  Request.Params["param"] == null ? "": Request.Params["param"];
同じ機能を実現しても、第二段コードは第一段コードより簡潔ではないことを発見しました。ここの」?「三元の操作子です。この三元操作子を使って条件操作子とも言います。簡単にif文を実現しました。
条件演算子を使用する場合は、条件式がこのx?y:zであると仮定して、表式タイプはyとzの変数タイプのうちの1つに過ぎません。つまり、yとzの変数タイプはこの条件式のタイプを決定します。yとzは同じタイプでもyとzは同じタイプでもありません。表式のタイプと赋値タイプが一致しないと、編集が発生します。もしあなたが以下のコードを実現したいなら、
string strTemp ;
object obj;
....

if(strTemp ==  "")
          obj   =   DBNull.Value;
  else
          obj   =   strTemp ;
そして簡単にするために、次のような形に変えます。
string strTemp;
object obj = strTemp == ""?DBNull.Value:strTemp;
コンパイルする時、エラーが発生します。DBNullとstringの間に暗黙的な変換がないので、次のコードに修正すればいいです。
object obj = strTemp == ""? DBNull.Value: (object)strTemp;
また条件演算子は右に関連していて、左から右に計算するので、a?b:c?d:eはa?b:(c?d:e)と理解すべきです。
上記のDBNullに言及しましたが、czhi 2.0の中でNullableのデータタイプを実現しました。このデータタイプを軽視しないでください。実はとても役に立ちます。これからはobjectのデータに対してifを行うことを放棄することができます。このように判断します。データベースの応用上、データベースの中にあるフィールドは空の値を取ることができます。Cの世界でnullableタイプを導入するのはこれに対応しています。オブジェクトから関係データベースオブジェクトに写像するか、逆に変換するのはスムーズです。Nullableデータタイプをもっと知りたいなら、msdnを調べてもいいです。(ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/html/T_System_Nullable.htm)またはここですを見に行きます。Nullableのデータタイプをnon-Nullableのデータに変換するために、このようなオペレータがあります。「双疑問符操作符とは、割り当てられた値を取るという意味ですか?左のもので、左がnullであれば、割り当てられた値を取る?右のもの、例えばint y=x?-1が空であれば、yの値は-1です。
そこで、一番上の二つ目のコードを変更できます。
string strParam= Request.Params["param"]?? "";
へへへ、もっと簡潔になりましたか?
まだあります。「修飾子とは、System.Nullable<t><t>の略語であり、例えばint?空の整形を表しています。例えば、int?a=1またはint?b=null。NullableタイプはHasValueのブックタイプの読み取り専用属性を持っています。Nullableタイプの例のこの属性がtrueである場合、このインスタンスが空でないことを示します。性はSystem.InvalidOperation Exceptionを招きます。
いかがでしたか?ここでは「?」号の詳細については、疑問符自体だけではないです。
本論文の最初のアドレス:http://www.watch-life.net/csharp/csharp-detail-question-marks.html
もっと多くの文章を見てください。軒を守る[http://www.watch-life.net]