C鑰3.0学習(1)---暗黙の型の局所変数と拡張方法
暗黙の型の局所変数
暗黙の型の局所変数は、varキーワードで宣言されています.
c鑰3.0でvarキーで宣言された変数が割り当てられた後、コンパイル時にコンパイラは変数値の種類によって変数の種類を自動的に推定します.やはり強いタイプです.これはobjectとは違います.実際には、varのキーワードは特定のタイプではなく、1つのプレースホルダとして機能しています.コンパイルしたら、該当のタイプに置き換えられます.注意すべき点は、varで宣言された変数には初期値が必要です.そうでないとコンパイルエラーが発生します.値を与えないと変数の種類は値によって推測できないからです.
varは局所変数のみを宣言し、foreachで使用できます.
これは非常に有用な特性です.拡張方法はソースを変えずに既存のタイプを追加することができます.拡張方法のクラスは静的なクラスでなければなりません.以下のとおりです
暗黙の型の局所変数は、varキーワードで宣言されています.
var i = 123;
var h=123.123;
var s = “oec2003";
var intArr = new[] {1,2,3,4} ;
var a = new[] { 1, 10, 100, 1000 };
一見、Javascriptのように見えますが、キーワードは同じですが、本質的な違いがあります.c鑰3.0でvarキーで宣言された変数が割り当てられた後、コンパイル時にコンパイラは変数値の種類によって変数の種類を自動的に推定します.やはり強いタイプです.これはobjectとは違います.実際には、varのキーワードは特定のタイプではなく、1つのプレースホルダとして機能しています.コンパイルしたら、該当のタイプに置き換えられます.注意すべき点は、varで宣言された変数には初期値が必要です.そうでないとコンパイルエラーが発生します.値を与えないと変数の種類は値によって推測できないからです.
varは局所変数のみを宣言し、foreachで使用できます.
var nums=new []{1,2,3,4,5};
foreach(var i in nums)
{
}
拡張方法これは非常に有用な特性です.拡張方法はソースを変えずに既存のタイプを追加することができます.拡張方法のクラスは静的なクラスでなければなりません.以下のとおりです
public static class oec2003Extensions
{
public static bool IsValidEmail(this String s)
{
Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
return regex.IsMatch(s);
}
}
上のIsValidEmail静的な方法は静的な種類oec 2007 Extens類の中で、この種類はいかなる名称空間の下で、使うところで名前空間を引用すればいいです.IsValidEmail方法の役割は、電子メールを検証することです.方法には三つのパラメータがあります.thisはコンパイル上の要求にすぎず、コンパイラにこの方法が拡張方法として使用される可能性があることをヒントとして伝えます.Stringは私達が拡張したいタイプです.sはメールの内容を検証します.この拡張方法はどうやって使うかを見てみます.protected void Button2_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text.Trim().IsValidEmail())
{
Response.Write("email is right");
}
else
{
Response.Write("email is error");
}
}
非常に不思議ではないですか?stringタイプの中で先ほど追加したIsValidEmailの方法が多くなりました.直接に呼び出してメールアドレスの検証ができます.