黑马程序员技术交流社区

标题: c#.net 如何定义可变长度数组属性 [打印本页]

作者: 于振发    时间: 2013-9-28 22:47
标题: c#.net 如何定义可变长度数组属性
本帖最后由 于振发 于 2013-9-29 13:55 编辑

定义一个数组属性,它的长度是不确定的,内容也是不确定的,如何定义?

我这样写对么 ?
public  class Class1
{
  private string [] width=new string [4];
  public string this[int i]
        {
            get { return width ; }
            set
            {
                width = value;
            }
        }
}
这样定义数组长度会不会固定了啊?

作者: 段朝骞    时间: 2013-9-29 00:18
new string[4]时就已经是固定了.

要定义可变数组使用ArryList或者List<T>

例如使用ArryList:
ArryList arrs =new ArryList();   //定义一个可变数组arrs,其元素类型不定,可以一直添加元素,但是元素类型必须一致
for(int i=0;i<=10;i++)  
{
   arrs.Add(i);   //将0到10 的数加入到arrs数组中,确定arrs的类型为int,不能再添加其它类型的元素
}
for(int i =100;i<150;i++)
{
   arrs.Add(i);  //将100到150的数加入到arrs中
}

List<T>和ArryList差不多一样,例如:

List<int> liarrs = new List<int>(); //定义一个可变的liarrs数组,其元素类型为int
liarrs.Add(1);
liarrs.Add(10);
liarrs.Add(8);


作者: 黄广祯    时间: 2013-9-29 01:20
SF正解,你声明的是一个string类型的数组,长度是4,已经固定了
  1. public string this[int i]  //这是一个索引器,只是类似属性的实现,但不是属性
  2. {
  3.             get { return width[i] ; }
  4.             set
  5.             {
  6.                 width[i] = value;
  7.             }
  8.         }
复制代码
可变数组在C#中也就是ArrayList和泛型集合List<T>
最近正在看List<T>,这里就用它来实现下
  1.         public class Class1
  2.         {
  3.             private List<string> width = new List<string>();//声明一个string类型的集合

  4.             public List<string> Width        //定义Width属性
  5.             {
  6.                 get { return width; }
  7.                 set { width = value; }
  8.             }
  9.         }

  10.         static void Main(string[] args)
  11.         {
  12.             Class1 c = new Class1();        //声明一个Class1类
  13.             c.Width.Add("你好");        //通过属性给私有成员width赋值
  14.             c.Width.Add("拜拜");
  15.             c.Width.Add("去死");
  16.             foreach (string s in c.Width)  //遍历私有成员width的值
  17.             {
  18.                 Console.WriteLine(s);
  19.             }
  20.         }
复制代码
希望能够对你有帮助,百度知道那个问题不是你问的吧?
作者: ☜⑦圊⑥慾➹沼    时间: 2013-9-29 08:50
你那样声明的是一维数组,长度只能是固定的,要想设置不固定的,那的使用泛型集合List<T>或者ArrayList<T>
比如:你要声明一个string类型的数组:
List<string> strlist=new List<string>();
添加数据:
strlist.Add("你好!");
strlist.Add("哈罗!");
strlist.Add("Hello!");
......
删除元素:
strlist.Remove(strlist[i]);




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2