我有以下代码:
public class Game
{
public Game(int board)
{
}
public List<int> play(List<int> lines)
{
return lines;
}
}
如果我使用参数2来实例化“Game”类的新对象:
Game game = new Game(2)
有没有办法在“play”方法中检索(和使用)这个参数而不声明这两个方法之外的任何其他变量,或者定义任何其他方法?
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
您需要将其存储在类成员变量中,如
public class Game
{
private int board;
public Game(int board)
{
this.board = board;
}
public List<int> play(List<int> lines)
{
return lines[board];
}
}
答案 1 :(得分:1)
public class Game {
private int _board;
public Game(int board) {
_board = board;
}
public List<int> play(List<int> lines)
{
//use _board here eg: this._board ...
return lines;
}
}
答案 2 :(得分:0)
您可以定义int类型的private int board;
成员,并为其分配board的值。然后你可以在播放方法中访问它。
答案 3 :(得分:0)
public class Game {
private int Board;
public Game(int board) {
Board = board;
}
public List<int> play(List<int> lines)
{
//used board here
return lines;
}
}
只需创建一个可以通过play方法访问的变量Board
答案 4 :(得分:0)
将board
声明为您班级中的成员,以便所有功能都可以访问它。也许是这样的:
public class Game
{
private int board;
// Constructor for game. Initializes a new board
public Game(int board)
{
this.board = board
}
public List<int> play(List<int> lines)
{
// Access board
return lines;
}
}
答案 5 :(得分:0)
定义一个private field来保存通过构造函数传递的值。然后在Play-Method中访问此字段:
public class Game {
private readonly int _Board;
public Game(int board) {
_Board = board;
}
public List<int> play(List<int> lines)
{
//access field here
var board = _Board;
return lines;
}
}
答案 6 :(得分:0)
我建议声明属性并使用构造函数链接:
public class Game {
public Game(int board, List<int> lines) {
if (board < 0)
throw new ArgumentOutOfRange("board");
else if (lines == null)
throw new ArgumentNullException("lines");
Board = board;
Lines = lines;
}
public Game(int board)
: this(board, new List<int>()) {
}
public Game(List<int> list)
: this(0, list) {
}
public int Board {
get;
private set;
}
public List<int> Lines {
get;
private set;
}
}
典型用途:
Game game = new game(3);
game.Lines.Add(123);
game.Lines.Add(456);
// Board: 3; Lines: 123, 456
Console.Write("Board: {0}; Lines: {1}", game.Board, string.Join(", ", game.Lines));
答案 7 :(得分:0)
将它作为第二个参数传递给play方法,而不是将它传递给构造函数,因为你在构造函数中没有对它进行任何操作。
public class Game
{
public Game() {}
public List<int> play(List<int> lines, int board)
{
// do whatever you want to do with board here
return lines;
}
}
答案 8 :(得分:0)
我相信答案的数量是由于你没有在你的问题中澄清“你在哪里”使用参数的值。
如果大多数人怀疑你只想在课堂上使用它(比如任何一个类的方法),那么一个字段就足够了,你可以使用任何先前给出的答案。虽然我暗中想到@ jon-Lopez-garcia的一个,但是因为它符合我的风格并且不做任何额外的假设。
另一方面,如果您需要从类的方法外部访问该值,那么属性是正确的方法。检查@ dmitry-bychenko的答案,非常完整,但做了一些假设,你没有提到你需要的功能。
然而,如果你想从外面访问它,你也必须考虑是否要从外面改变它,因为在@ dmitry-bychenko的回答中没有从外面改变(注意“私人集; “)
因为缺乏背景,所以我不会做空。
public class Game
{
public int Board { get; private set; }
public Game(int board)
{
Board = board;
}
public List<int> play(List<int> lines)
{
//use Board here
return lines;
}
}
这些可能是该主题的良好读数: