在那些尖括号内输入类型

时间:2017-11-07 07:45:29

标签: c#

嗯这可能是重复的,但我不知道他们叫什么,所以我不知道该搜索什么..

我有一个加密字符串并返回字节数组(byte [])的函数。 现在我想要相同的功能来返回一个字符串,如果需要和其他地方,我已经使用那些尖括号来告诉功能输出应该是什么。
等。

Security.Encrypt(data, "password") : returns byte[]
Security.Encrypt<string>(data, "password") : returns string

现在我完全误解了那些锋利的括号的用法吗? 他们叫什么? (然后我可能会自己谷歌) 我如何访问这个eehm。修饰 - 瘦我的功能?

1 个答案:

答案 0 :(得分:5)

尖括号称为泛型。

我不认为这是泛型的正确用法,因为您的方法只能返回字节数组或字符串。当您的方法适用于所有类型或所有实现类型的接口时,应使用泛型。 System.Collections.Generic.List<T>就是这样一个例子,你可以创建一个存储任何类型对象的列表,所以这是对泛型的适当使用。

相反,请尝试将它们分为两个单独的方法 - EncryptToStringEncryptToByteArraySystem.Convert类中的方法也可以执行此操作,因为您只能转换为Int32Int16Boolean之类的内容,它会公开单独的方法以转换为每种类型。

为了完整起见,我将向您展示如何获取通用参数类型。

您的方法将如下声明:

public T Encrypt<T>(string data, string password) {

}

现在T是用户输入的类型,您可以像这样检查

if (typeof(T) == typeof(string))