C# 中变量和字符串之间的区别
本文关键字:之间 区别 字符串 变量 | 更新日期: 2023-09-27 18:35:28
c#
中variable
和string
有什么区别
为什么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;
}
}
}
}
变量的类型没有在代码中指定,而是编译器从code
推断它。GetData 可能不会返回string
。
隐式类型的局部变量是强类型的,就像 自己声明了类型,但编译器确定类型。 i 的以下两个声明在功能上是等效的,MSDN。
根据更新的OP进行编辑
您不能将数据表分配给字符串,它们是两种不同的类型。如果您想自己指定类型并且不希望编译器使用 var
为您确定类型,则可以使用 DataTable
而不是 var。
string data = GetData("");
Var
是一种隐式类型。
它为 C# 编程语言中的任何类型提供别名。
别名类型由 C# 编译器确定,其中字符串是字符串变量类型
如果方法返回类型GetData
string
下面就可以了
string data = GetData("");
但是GetData
方法的返回类型是DataTable
,可以将代码改为
DataTable data = GetData("");
或者使用var
编译器将为您确定类型。
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();
同样,这完全取决于您和您的个人编码风格。希望这能解决您的问题!