c#中变量和字符串之间的区别

时间:2013-10-16 05:50:39

标签: c# asp.net

variable

stringc#之间的区别是什么?

为什么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 个答案:

答案 0 :(得分:4)

未在代码中指定var的类型,而编译器code推断出它。 GetData可能不会返回string

  

隐式类型的局部变量是强类型的,就像你一样   我自己声明了类型,但编译器确定了类型。   以下两个i声明在功能上等同于MSDN

根据更新的OP

修改

无法将DataTable分配给字符串它们是两种不同的类型。如果您想自己指定类型并且您不希望编译器使用DataTable为您确定它,则可以使用var而不是var。

string data = GetData("");

答案 1 :(得分:0)

如果GetData方法返回类型为string,则可以使用

string data = GetData("");

GetData方法的返回类型为DataTable,您可以将代码更改为

DataTable data = GetData("");

或者使用var,编译器将为您确定类型。

答案 2 :(得分:0)

Var是隐式类型  它使用C#编程语言对任何类型进行别名  别名类型由C#编译器确定,其中string是字符串变量类型

答案 3 :(得分:0)

var不是数据类型。将var声明为“编译器,我希望您通过查看我分配给它的对象来确定该变量应该是什么类型”的同义词。假设你有这个:

var myString = "This is a string!";

C#编译器预先看到您要将字符串分配给myString,并且它知道myString将是string类型。就编译器而言,它与:

完全相同
string myString = "This is a string!";

至于你应该使用什么,它完全是你的偏好,选择一个而不会影响你的代码。就个人而言,我使用var,因为我认为两次声明一个对象的类型是多余的,如下所示:

MyClass myClass = new MyClass();

相反,我更喜欢:

var myClass = new MyClass();

同样,它完全取决于您和您的个人编码风格。希望这能解决你的问题!