0

variablestringin有什么区别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 的类型没有在代码中指定,而是编译器code. GetData 可能不会返回string.

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

根据更新的 OP 进行编辑

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

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

如果GetData方法返回类型string低于以下将起作用

string data = GetData("");

但是方法的返回类型GetDataDataTable,您可以将代码更改为

DataTable data = GetData("");

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

于 2013-10-16T05:52:38.857 回答
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它是因为我觉得两次声明一个对象的类型是多余的,如下所示:

MyClass myClass = new MyClass();

相反,我更喜欢:

var myClass = new MyClass();

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

于 2013-10-16T06:35:22.143 回答