C#在泛型中重复使用类型时缩短语法?
如果我使用泛型,比如在这个示例中,有没有办法缩短语法,这样我就不必重复键入“companylookupdatea”C#在泛型中重复使用类型时缩短语法?,c#,.net,generics,.net-3.5,delegates,C#,.net,Generics,.net 3.5,Delegates,如果我使用泛型,比如在这个示例中,有没有办法缩短语法,这样我就不必重复键入“companylookupdatea” Func DelCompareNonkeyFields公司= 新职能 (CompanyLookUpdatea.hasidenticalNonKeyfields至); 我曾尝试过使用typet=typeof(copmanylookupdatea),并在所有位置使用t,但这似乎不起作用 PS:虽然我对一种更简洁的方法持开放态度,但我对一种使泛型语法更简洁的方法更感兴趣。不,你不能做比
Func DelCompareNonkeyFields公司=
新职能
(CompanyLookUpdatea.hasidenticalNonKeyfields至);
我曾尝试过使用typet=typeof(copmanylookupdatea)
,并在所有位置使用t
,但这似乎不起作用
PS:虽然我对一种更简洁的方法持开放态度,但我对一种使泛型语法更简洁的方法更感兴趣。不,你不能做比这更好的事情。不管是好是坏,C#没有与
typedef
相当的道德标准
您可以尝试使用别名来缩短类型名称,尽管我个人认为这不是一个好主意:
using CLD = CompanyLookupData;
Func<CLD, CLD, bool> DELCompareNonKeyFieldsCompany =
new Func<CLD, CLD, bool> (CLD.HasIdenticalNonKeyFieldsTo);
使用CLD=companylookupdatea;
Func DelcomparenonkeyFields公司=
新函数(CLD.HasIdenticalNonKeyFieldsTo);
另一种可能性(在实践中不太可能适用)是使用隐式类型变量(var
),如果我们谈论的是局部变量。是的,有几种方法可以实现这一点:
如果变量是局部变量,则可以使用var
关键字:
var DELCompareNonKeyFieldsCompany = new Func<CompanyLookupData, CompanyLookupData, bool> (CompanyLookupData.HasIdenticalNonKeyFieldsTo);
如果经常使用此类型,您可能希望创建自己的委托类型:
public delegate bool CompareCompanyNonKeyFields(CompanyLookupData, CompanyLookupData);
并像这样使用它:
CompareCompanyNonKeyFields DELCompareNonKeyFieldsCompany = CompanyLookupData.HasIdenticalNonKeyFieldsTo;
或者,如果该类型仅在一个类中使用,您还可以使用
关键字为该类型创建一个别名,使用(尽管我个人认为这会妨碍代码的可读性):
使用CompareCompanyNonKeyFields=System.Func;
...
CompareCompanyNonKeyFields DELCompareNonKeyFieldsCompany=CompanyLookUpdatea.HasIdenticalNonKeyFieldsTo;
您可以使用var,稍微缩短一点:)
var DELCompareNonKeyFieldsCompany=new Func(companylookupdatea.HasIdenticalNonKeyFieldsTo);
我能想到的唯一方法是使用声明
using cld = MyNamespace.CompanyLookupData;
然后,您可以使用cld代替文件其余部分的全名。使用
语句声明别名:
using MyType = System.Func<CompanyLookupData, CompanyLookupData, bool>;
MyType DELCompareNonKeyFieldsCompany = new MyType(CompanyLookupData.HasIdenticalNonKeyFieldsTo);
使用MyType=System.Func;
MyType DELCompareNonKeyFieldsCompany=新的MyType(CompanyLookUpdatea.HasIdenticalNonKeyFieldsTo);
您可以在助手工厂方法中隐藏它:
void Main() {
var f1 = Helper.Create(CompanyLookupData.HasIdenticalNonKeyFieldsTo);
var f2 = Helper.Create(CompanyLookupData.HasIdenticalNonKeyFieldsTo);
}
static class Helper {
public static Func<T, T, bool> Create<T>(Func<T, T, bool> @delegate) {
return @delegate;
}
}
void Main(){
var f1=Helper.Create(companylookupdatea.HasIdenticalNonKeyFieldsTo);
var f2=Helper.Create(companylookupdatea.HasIdenticalNonKeyFieldsTo);
}
静态类助手{
公共静态Func创建(Func@delegate){
return@delegate;
}
}
将CompanyLookUpdatea类型的名称更改为更短的名称如何。其他任何东西都会降低代码的可读性我可以,但我不想每次需要在委托中使用类时都重命名它们,哈哈。:)你的意思可能是“财产”而不是“字段”?
var DELCompareNonKeyFieldsCompany = new Func<CompanyLookupData, CompanyLookupData, bool>(CompanyLookupData.HasIdenticalNonKeyFieldsTo);
using cld = MyNamespace.CompanyLookupData;
using MyType = System.Func<CompanyLookupData, CompanyLookupData, bool>;
MyType DELCompareNonKeyFieldsCompany = new MyType(CompanyLookupData.HasIdenticalNonKeyFieldsTo);
void Main() {
var f1 = Helper.Create(CompanyLookupData.HasIdenticalNonKeyFieldsTo);
var f2 = Helper.Create(CompanyLookupData.HasIdenticalNonKeyFieldsTo);
}
static class Helper {
public static Func<T, T, bool> Create<T>(Func<T, T, bool> @delegate) {
return @delegate;
}
}