嗯这可能是重复的,但我不知道他们叫什么,所以我不知道该搜索什么..
我有一个加密字符串并返回字节数组(byte [])的函数。
现在我想要相同的功能来返回一个字符串,如果需要和其他地方,我已经使用那些尖括号来告诉功能输出应该是什么。
等。
Security.Encrypt(data, "password") : returns byte[]
Security.Encrypt<string>(data, "password") : returns string
现在我完全误解了那些锋利的括号的用法吗? 他们叫什么? (然后我可能会自己谷歌) 我如何访问这个eehm。修饰 - 瘦我的功能?
答案 0 :(得分:5)
尖括号称为泛型。
我不认为这是泛型的正确用法,因为您的方法只能返回字节数组或字符串。当您的方法适用于所有类型或所有实现类型的接口时,应使用泛型。 System.Collections.Generic.List<T>
就是这样一个例子,你可以创建一个存储任何类型对象的列表,所以这是对泛型的适当使用。
相反,请尝试将它们分为两个单独的方法 - EncryptToString
和EncryptToByteArray
。 System.Convert
类中的方法也可以执行此操作,因为您只能转换为Int32
,Int16
,Boolean
之类的内容,它会公开单独的方法以转换为每种类型。
为了完整起见,我将向您展示如何获取通用参数类型。
您的方法将如下声明:
public T Encrypt<T>(string data, string password) {
}
现在T
是用户输入的类型,您可以像这样检查
if (typeof(T) == typeof(string))