需要使用REF、数组和方法的帮助
本文关键字:方法 帮助 数组 REF | 更新日期: 2023-09-27 18:07:54
好的,我正在做我的实验从c#类涉及使用ref参数,数组和方法。我在做这件事时遇到了一些问题,我正在乞求帮助。所以. .首先,我将问题修改成最简单的块,以帮助我解释我遇到的问题。下面是一段简化的代码:
using System;
public class Repository
{
string[] titles;
static void Main(string[] args)
{
string title;
Console.Write("Title of book: ");
title = Console.ReadLine();
getBookInfo(ref title);
}
static void getBookInfo(ref string title)
{
titles[0] = title;
}
static void displayBooks(string[] titles)
{
Console.WriteLine("{0}", titles[0]);
}
}
现在,当你尝试编译代码时,你注意到无法编译,因为错误提示"需要一个对象引用来访问非静态成员'Repository.titles'"。问题是,格式的3个方法必须完全张贴告知在分配。现在,如何在保留模板的同时避免这个问题呢?
另一个问题,我如何在main中显示方法displayBooks的内容?(由于一些问题,我还没有走到这一步。)
此致敬礼,请帮忙!
----------------------- 谢谢你的帮助! !---------
首先,您不需要使用ref
,除非您想更改title
的值,因为它存在于Main()
中。下面的代码演示了这个概念:
static void Main(string[] args)
{
string a = "Are you going to try and change this?";
string b = "Are you going to try and change this?";
UsesRefParameter(ref a);
DoesntUseRefParameter(b);
Console.WriteLine(a); // I changed the value!
Console.WriteLine(b); // Are you going to try and change this?
}
static void UsesRefParameter(ref string value)
{
value = "I changed the value!";
}
static void DoesntUseRefParameter(string value)
{
value = "I changed the value!";
}
数组需要先创建,然后才能使用它。下面是修改后的代码:
static string[] titles;
static void Main(string[] args)
{
string title;
titles = new string[1]; // We can hold one value.
Console.Write("Title of book: ");
title = Console.ReadLine();
getBookInfo(title);
}
static void getBookInfo(string title)
{
titles[0] = title;
}
要显示您的图书,您可以尝试以下方法:
static void displayBooks(string[] titles)
{
// Go over each value.
foreach (string title in titles)
{
// And write it out.
Console.WriteLine(title);
}
}
// In Main()
displayBooks(titles);
对于您的第一个问题,使titles
静态:
private static string[] titles;
首先你要把title赋值给一个还没有初始化的数组title的索引0。当你试图给它赋值时,它本质上是一个空数组。
解决这个问题的快速方法是像这样修改你的代码:private static string[] titles;
static void Main(string[] args)
{
string title;
Console.Write("Title of book: ");
title = Console.ReadLine();
getBookInfo(ref title);
displayBooks(titles);
}
static void getBookInfo(ref string title)
{
//titles[0] = title;
titles = new string[] {title};
}
static void displayBooks(string[] titles)
{
Console.WriteLine("{0}", titles[0]);
}
如果你想把更多的书赋值给这个数组并打印出来,你需要用size初始化数组。我只会使用List<string>
,它可以添加而不需要定义初始大小。
设置标题数组的大小:static string[] titles = new string[50];
回顾一下这个程序打算做什么,还有更多的逻辑需要添加。例如一个计数器变量,用于为titles
数组中的下一个索引添加标题。