variable
string
和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;
}
}
}
}
答案 0 :(得分:4)
未在代码中指定var的类型,而编译器从code
推断出它。 GetData可能不会返回string
。
根据更新的OP隐式类型的局部变量是强类型的,就像你一样 我自己声明了类型,但编译器确定了类型。 以下两个i声明在功能上等同于MSDN。
修改
您无法将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();
同样,它完全取决于您和您的个人编码风格。希望这能解决你的问题!