C# 这个类有什么用<;T>;
我在一个StackOverflow站点中看到了以下代码。但没有详细解释,我无法理解。有人能解释一下吗C# 这个类有什么用<;T>;,c#,C#,我在一个StackOverflow站点中看到了以下代码。但没有详细解释,我无法理解。有人能解释一下吗 public class MyArray<T> { T[] array = new T[10]; public T GetItem(int index) { return array[index]; } } 公共类MyArray { T[]数组=新的T[10]; 公共T GetItem(整数索引) { 返回数组[索引]; } } 我
public class MyArray<T>
{
T[] array = new T[10];
public T GetItem(int index)
{
return array[index];
}
}
公共类MyArray
{
T[]数组=新的T[10];
公共T GetItem(整数索引)
{
返回数组[索引];
}
}
具有类型参数。单独的类(每个类中都有不同的字段类型)可以替换为单个泛型类。泛型类引入了一个类型参数。这将成为类定义本身的一部分。它允许您定义类型安全的数据结构,而无需提交到实际的数据类型。泛型最常见的用途是创建集合类。这将显著提高性能并提高代码质量,因为您可以重用数据处理算法,而无需复制特定类型的代码
字母T
表示仅根据呼叫位置已知的类型。程序可以对T
的实例进行操作,就像它是一个实类型一样,但它不是
我想知道这是不是一门课
是的,这是一门课
如何实例化这个类
MyArray=newmyarray();
或
MyArray=newmyarray();
或者其他你喜欢的类型
如何在类中使用T数组
因为我们知道泛型的一个常见用法是创建集合类。所以你也可以这样使用它
数组是需要在类的外部还是内部创建
问题是您谈论的是哪个类是声明类还是实现类。但假设您谈论的是实现或创建类对象的类。它应该像普通对象启动器一样位于类内部。
具有类型参数。单独的类(每个类中都有不同的字段类型)可以替换为单个泛型类。泛型类引入了一个类型参数。这将成为类定义本身的一部分。它允许您定义类型安全的数据结构,而无需提交到实际的数据类型。泛型最常见的用途是创建集合类。这将显著提高性能并提高代码质量,因为您可以重用数据处理算法,而无需复制特定类型的代码
字母T
表示仅根据呼叫位置已知的类型。程序可以对T
的实例进行操作,就像它是一个实类型一样,但它不是
我想知道这是不是一门课
是的,这是一门课
如何实例化这个类
MyArray=newmyarray();
或
MyArray=newmyarray();
或者其他你喜欢的类型
如何在类中使用T数组
因为我们知道泛型的一个常见用法是创建集合类。所以你也可以这样使用它
数组是需要在类的外部还是内部创建
问题是您谈论的是哪个类是声明类还是实现类。但假设您谈论的是实现或创建类对象的类。它应该像普通对象启动器一样位于类内部。这是一个。这意味着在实例化时,
将是一个类型。例如,根据您的代码示例,您可以将其实例化为:
MyArray<int> integerArray = new MyArray<int>();
这样做的原因是允许容器类在其可以包含的类型方面更加灵活。这使得它们更加可重用。在泛型之前,如果需要动态列表,则需要使用ArrayList
,将所有内容转换为typeObject
,然后需要手动将其向上转换回它想要的类型
有很多内置的泛型类,例如,等等。它们可以在系统.Generics
模块中找到。这是一个。这意味着在实例化时,
将是一个类型。例如,根据您的代码示例,您可以将其实例化为:
MyArray<int> integerArray = new MyArray<int>();
这样做的原因是允许容器类在其可以包含的类型方面更加灵活。这使得它们更加可重用。在泛型之前,如果需要动态列表,则需要使用ArrayList
,将所有内容转换为typeObject
,然后需要手动将其向上转换回它想要的类型
有很多内置的泛型类,例如,等等。它们可以在
系统中找到。泛型模块中。1:是的,它是一个类;因此使用了类
关键字
2:var myArray=new myArray()代码>其中某物可以是任何类型(可能有一个奇怪的例外)
3:在类内,只需参考array
。不过,由于您不知道这些物品是什么类型的,所以您无法对它们本身进行大量处理
4:您发布的代码在类中创建数组。数组是隐藏的,只有通过GetItem
方法才能访问它。不过,你发布的内容必须是不完整的,因为这样做既没用也没用。你需要做的不仅仅是试着得到一件物品。1:是的,这是一门课;因此使用了类
关键字
2:var myArray=new myArray()代码>其中某物可以是任何类型(可能有一个奇怪的例外)
3:在类内,只需参考array
。不过,由于您不知道这些物品是什么类型的,所以您无法对它们本身进行大量处理
MyArray<int> integerArray = new MyArray<int>();
MyArray<string> stringArray = new MyArray<string>();
MyArray<int> myArrayInstance= new MyArray<int>();
public MyArray(T[] inputArrayElements)
{
array = inputArrayElements;
}
int itemAtIndexs = myArrayInstance.GetItem<int>(5);
// which will give you the item @ 5th index
namespace GenericArray
{
public class MyArray<T>
{
T[] array = new T[5];
public MyArray(int size)
{ //Not used in this programme, because the no. of elements is already set above.
}
public void SetItem(int index, T value)
{
array[0] = value;
}
public T GetItem(int index)
{
return array[index];
}
}
}
private void button4_Click(object sender, EventArgs e)
{
MyArray<int> myInt = new MyArray<int>(5); //Initializing the generic class.
myInt.SetItem(0, 1); //array element 0 is going to be assigned a value of 1.
MessageBox.Show(myInt.GetItem(0).ToString());
//You can also use the same class, to set string values.
}