2010-04-14 57 views
0

我是C#的新手,因此这可能是一个基本问题。我需要做的是在类库中放置一个如下所示的数组,然后对其进行调用。所以我想通过类和这个数组来显示合适的图片。我知道有一种更简单的方式来制作某些图片,但这是该项目的一项要求。这是一个C#中的asp.NET网站。在类库中编写数组并对其进行调用C#

string[] PictureArray; 

PictureArray = new string[3]; 
PictureArray[0] = "~/pics/grl.jpg"; 
PictureArray[1] = "~/pics/pop.jpg"; 
PictureArray[2] = "~/pics/str.jpg"; 
PictureArray[3] = "~/pics/unk.jpg"; 

EDIT(也评论):
我想从数组的图片在点击一个按钮像这样在图像框中显示出来:

protected void Button1_Click(object sender, EventArgs e) { 
    Class1 name = new Class1(); 
    this.Image1.ImageUrl = name.GetPic(); 
} 

显然只是name.GetPic()不会做任何事情,它实际上会抛出一个错误。

编辑2:对不起,我刚刚意识到我可以编辑和评论。我已经正确设置了类中的数组,现在我需要访问它(请参阅上面的编辑)。

回答

string[] pictures = work.GetPictures(); 
Image1.ImageUrl = pictures[0]; 

是一切,我需要看到,由于Zyphrax

+1

你的问题是什么? – Alex 2010-04-14 02:21:44

+0

该项目的要求?这是功课吗? – 2010-04-14 03:06:18

+0

注意:'string [3]'是一个包含3个元素(0-2)的数组,而不是最后一个索引为3的数组。这是一个特别容易的错误,如果您来自VB.NET,另一种方式。 – Powerlord 2010-04-14 18:57:22

回答

1

好的,看来你已经付出了一些努力。
我认为你正在寻找类似下面的例子。

我已添加评论以帮助您了解正在发生的事情。

一个在你的类库中的类:

// Define a class called HomeWork, make it accessible to other 
// classes in other namespaces 
public class HomeWork { 

    // Define a method called GetPictures, no incoming arguments, 
    // returns a string[] 
    public string[] GetPictures() { 

    // Create a new instance of a string array 
    string[] pictures = new string[4]; 

    // Fill the string array with a couple of strings 
    pictures[0] = "~/pics/grl.jpg"; 
    pictures[1] = "~/pics/pop.jpg"; 
    pictures[2] = "~/pics/str.jpg"; 
    pictures[3] = "~/pics/unk.jpg"; 

    // Return the string array 
    return pictures; 
    } 
} 

如何调用这个类的方法:

// Create a new instance of the HomeWork class 
HomeWork work = new HomeWork(); 

// Call the GetPictures method 
work.GetPictures(); 

请向你的老师把它解释成更详细。
我们不能教你一个SO问题:)

编辑多年的编程经验:在回答你的第二个问题

选项1:使用是由GetPictures返回的数组:

HomeWork work = new HomeWork(); 
string[] pictures = work.GetPictures(); 

Image1.ImageUrl = pictures[0]; 
Image2.ImageUrl = pictures[1]; 
Image3.ImageUrl = pictures[2]; 
// etc.. 

选项2:创建过载用于接受一个索引GetPictures

public string[] GetPictures() { 
    // This method remains unchanged 
} 

public string[] GetPictures(int index) { 
    // Get the string array from GetPictures 
    string[] pictures = GetPictures(); 

    // Return a specific index 
    return pictures[index]; 

    // As you can see, this method might be 
    // dangerous to use, because someone could 
    // ask for an invalid index causing an 
    // IndexOutOfRangeException 
} 

HomeWork work = new HomeWork(); 
Image1.ImageUrl = work.GetPictures(0); 
Image2.ImageUrl = work.GetPictures(1); 
Image3.ImageUrl = work.GetPictures(2); 

以上示例旨在说明C#如何工作。
在业务应用程序中以这种方式使用它会是低效的。

+0

我真的很感谢帮助,只是一件事。一旦我打电话给班级,我该如何指定数组(0,1,2或3)上的哪个图片(字符串)将被使用?我想象它会在工作中.GetPictures();括号之间,但我不确定的语法。 – eddy 2010-04-15 02:17:43

+0

我想从数组的图片在在一个按钮的图像框,显示点击这样的: 保护无效的button1_Click(对象发件人,EventArgs的) { Class1的名称=新的Class1() ; this.Image1.ImageUrl = name.GetPic(); } 显然只是name.GetPic()不会做任何事情,它实际上会抛出一个错误。 – eddy 2010-04-15 02:28:32

+0

我将它复制到我的文章中,它不会将代码分隔开。 – eddy 2010-04-15 02:29:55

0

我只能通过一个答案添加到此。

public class Class1 
{ 
     public string ArrayMethod (string ArrayMethod) 
     { 

      string[] PictureArray; 
      PictureArray = new string[3]; 
      PictureArray[0] = "~/pics/grl.jpg"; 
      PictureArray[1] = "~/pics/pop.jpg"; 
      PictureArray[2] = "~/pics/str.jpg"; 
      PictureArray[3] = "~/pics/unk.jpg"; 
     } 
} 

这就是我已经尝试把数组放在类中。当它生成时,我得到错误“不是所有的代码路径都返回一个值”。首先你可以帮助我做到这一点。是的,这是为了学校,并且据我所知,这是你如何学习编程,如果这是老师没有涵盖的东西。我不是要求你写我的代码,我只是坚持下去。

+0

您应该可以将其编辑为问题,而不是将其作为答案发布。很多人只会看看这个问题,看看他们是否可以回答这个问题,他们可能会错过答案中给出的这些额外信息。 – sth 2010-04-14 18:26:23

+0

上面的方法ArrayMethod指出它返回一个字符串。你的方法不包含return语句。它也需要一个字符串参数。我不确定你使用的是什么。你的数组被定义为长度为3,但你正试图向它添加4个项目。你会得到一个索引越界异常。 – 2010-04-14 18:27:50

相关问题