C#在泛型中重复使用类型时缩短语法?

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:虽然我对一种更简洁的方法持开放态度,但我对一种使泛型语法更简洁的方法更感兴趣。不,你不能做比

如果我使用泛型,比如在这个示例中,有没有办法缩短语法,这样我就不必重复键入“companylookupdatea”

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;
    }
}