0

variablestringのはどう違いますかc#

c#がこれだけをサポートしている理由

var data = GetData("");  

なぜこれではないのですか?

string data = GetData("");

それとも両方をサポートしますか?どちらを使用するのが良いですか?それはどのように実装されていますか?

  private DataTable GetData(string query)
{
    string conString = ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ConnectionString;
    SqlCommand cmd = new SqlCommand(query);
    using (SqlConnection cn = new SqlConnection(conString))
    {
        using (SqlDataAdapter da = new SqlDataAdapter())
        {
            cmd.Connection = cn;
            da.SelectCommand = cmd;
            using (DataTable dt = new DataTable())
            {
                da.Fill(dt);
                return dt;
            }


        }
    }


}
4

4 に答える 4

4

var の型はコードで指定されておらず、コンパイラが .xml から推測しcodeます。GetData はおそらく を返しませんstring

暗黙的に型指定されたローカル変数は、自分で型を宣言したかのように厳密に型指定されますが、型はコンパイラによって決定されます。i の次の 2 つの宣言は、機能的に同等です。 MSDN .

更新されたOPに基づいて編集

DataTable を文字列に割り当てることはできません。これらは 2 つの異なるタイプです。自分で型を指定したいが、 を使用してコンパイラに型を決定させたくないDataTable場合は、 var の代わりに使用できます。var

string data = GetData("");
于 2013-10-16T05:53:08.153 に答える
0

Var暗黙の型です。
C# プログラミング言語の任意の型にエイリアスを設定します。
エイリアス化された型は C# コンパイラによって決定されます。ここで、string は文字列変数型です。

于 2013-10-16T05:55:30.017 に答える
0

varはデータ型ではありません。何かを として宣言することvarは、「コンパイラ、割り当てたオブジェクトを見て、この変数がどのような型であるべきかを理解してほしい」と言うのと同義です。あなたがこれを持っていたと仮定します:

var myString = "This is a string!";

C# コンパイラは、文字列が割り当てられていることを確認するために先を見越してmyStringおり、それが型myStringになることを認識していstringます。コンパイラに関する限り、次とまったく同じです。

string myString = "This is a string!";

何を使用するかについては、完全に好みであり、どちらを選択してもコードにはまったく影響しません。個人的には、次varのようにオブジェクトの型を 2 回宣言するのは冗長だと感じたので使用します。

MyClass myClass = new MyClass();

代わりに私は好む:

var myClass = new MyClass();

繰り返しますが、それは完全にあなたとあなたの個人的なコーディング スタイル次第です。これで疑問が解消されることを願っています!

于 2013-10-16T06:35:22.143 に答える
0

GetDataメソッドの戻り値の型がstring以下の場合は機能します

string data = GetData("");

GetDataただし、メソッドの戻り値の型はDataTableです。コードを次のように変更できます

DataTable data = GetData("");

または、使用するvarとコンパイラがタイプを決定します。

于 2013-10-16T05:52:38.857 に答える