C#使用不同类型的System.Data.Linq.Tables将变量设置为var
我有一个C#使用不同类型的System.Data.Linq.Tables将变量设置为var,c#,C#,我有一个var,我想对它进行初始化,通过一个开关盒,设置var的变量,但它可以有三个不同的System.Data.Linq.Tables。 dc是生成的DataClassesDataContext类 代码如下: var table = null; switch (scope) { case "LT": table = dc.LT_Contacts; break; case "LV": table = dc.LV_Contacts;
var
,我想对它进行初始化,通过一个开关盒
,设置var的变量
,但它可以有三个不同的System.Data.Linq.Tables
。
dc
是生成的DataClassesDataContext
类
代码如下:
var table = null;
switch (scope)
{
case "LT":
table = dc.LT_Contacts;
break;
case "LV":
table = dc.LV_Contacts;
break;
case "SW":
table = dc.SW_Contacts;
break;
}
这可能吗?您需要选择最合适的通用接口或基础非泛型类 对于
System.Data.Linq.Table
,它看起来像是ITable
:
ITable table;
switch (scope)
{
case "LT":
table = dc.LT_Contacts;
break;
case "LV":
table = dc.LV_Contacts;
break;
case "SW":
table = dc.SW_Contacts;
break;
default:
throw new Exception();
}
显然,您将只能使用
ITable
接口的成员。您需要选择最合适的通用接口或基本非泛型类
对于System.Data.Linq.Table
,它看起来像是ITable
:
ITable table;
switch (scope)
{
case "LT":
table = dc.LT_Contacts;
break;
case "LV":
table = dc.LV_Contacts;
break;
case "SW":
table = dc.SW_Contacts;
break;
default:
throw new Exception();
}
显然,您将只能使用
ITable
接口的成员。var
并不是使变量具有动态类型的魔法。相反,它只是告诉编译器从赋值的右侧推断类型的一种方法
因此,var某物代码>或var=null代码>永远无法独立运行,因为编译器无法在编译时静态推断类型
只有当赋值的右侧具有实际类型时,才可以使用var
,然后var
相当于显式提到该类型
在您的情况下,您必须指定一个显式类型,并且为了能够编译,您需要使用一个可以从这些数据上下文属性的所有三种类型分配的类型。例如,它必须是这些表类型的基类型
在的情况下,您可以使用它实现的任何非通用接口。根据您的需要,您可能希望选择一个变量,而不是另一个变量。例如,ITable
,或IQueryable
var
不是使变量具有动态类型的神奇之物。相反,它只是告诉编译器从赋值的右侧推断类型的一种方法
因此,var某物代码>或var=null代码>永远无法独立运行,因为编译器无法在编译时静态推断类型
只有当赋值的右侧具有实际类型时,才可以使用var
,然后var
相当于显式提到该类型
在您的情况下,您必须指定一个显式类型,并且为了能够编译,您需要使用一个可以从这些数据上下文属性的所有三种类型分配的类型。例如,它必须是这些表类型的基类型
在的情况下,您可以使用它实现的任何非通用接口。根据您的需要,您可能希望选择一个变量,而不是另一个变量。例如ITable
,或IQueryable
由于没有绑定到null的类型,所以不能将null分配给var变量。相反,您可以按如下所示执行相同的操作
var x= (DataType)null;
例如:-var x=(字符串)null代码>由于没有绑定到null的类型,所以不能将null分配给var变量。相反,您可以按如下所示执行相同的操作
var x= (DataType)null;
例如:-var x=(字符串)null代码>通常,变量有一个类型,您不能在运行时更改它的类型。为什么要将三张不同的桌子视为同一张桌子?您将如何处理表格
?此外,如果有三个不同的表存储相似的内容,这通常表明数据库设计中存在错误。也许您应该使用一个带有附加列的表ContactType
。通常,变量有一个类型,您不能在运行时更改它的类型。为什么要将三张不同的桌子视为同一张桌子?您将如何处理表格
?此外,如果有三个不同的表存储相似的内容,这通常表明数据库设计中存在错误。也许您应该使用一个带有附加列的表ContactType
。