gpt4 book ai didi

c# - 无法使用构造函数实例化类

转载 作者:太空宇宙 更新时间:2023-11-03 20:05:45 25 4
gpt4 key购买 nike

我很确定这是重复的,但经过几个小时的搜索/尝试后,我一直无法找到解决方法。

我不是高级程序员,但我有相当多的 C++ 经验。我正在尝试学习 C#,但在使用非常基本的语法时遇到了麻烦,尤其是在访问其他类时。一段时间以来,我一直在寻找简单的示例,绝大多数情况下,我发现的所有内容似乎都使用了一个巨大的类,其中使用了 main 方法,因此这些示例并不是很有帮助。

我想开发一个包含多个 .cs 文件(每个文件一个类)和另一个包含我将用于测试的主要方法的 .cs 文件的解决方案。我的解决方案名为 DIVAT。我有一个包含以下代码的 Dealer.cs 文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DIVAT
{
public class Dealer
{
public List<Tuple<int, string>> deck;

Dealer()
{ // default constructor
Console.Out.WriteLine("Default constructor called. (Dealer class)");

string [] suitValue = {"c", "d", "h", "s"};

for(int i = 2; i <= 14; i++){
for(int j = 0; j <= 3; j++){
deck.Add(new Tuple<int, string>(i, suitValue[j]));
}
}
}

~Dealer()
{// destructor
Console.Out.WriteLine("Destrcutor called. (Dealer class)");
}

Tuple<int, string> Dealer.getCard(int cardNum)
{// getter
return deck[cardNum];
}
}
}

现在我正尝试在另一个文件 Program.cs 中对此进行测试。我遇到了 2 个错误,但不知道为什么。我在尝试初始化 Dealer 类时遇到了很多麻烦。另外,我只想在我的 Dealer 类中测试一个 getter 函数。

我过去常常有更多的静态和私有(private)关键字,但在我遇到错误时把它们去掉了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DIVAT
{
class Program
{
static void Main(string[] args)
{
Dealer dealer = new Dealer();
// inaccessible due to it's protection level...

for (int i = 0; i <= 52; i++) {
Console.Out.WriteLine(dealer.getCard(i));
// does not contain a definition for getCard...
}


}
}
}

对于这些基本问题,我深表歉意,但我一直在网上搜索并尝试不同的方法来解决这个问题,但都没有成功。我觉得一旦我克服了这几个错误,我应该能够相对轻松地转换我的许多其他代码。

最佳答案

你的构造函数是隐式私有(private)的,因为你提供了零个公共(public)构造函数,它不能实例化你的类,即使类本身是公共(public)的..

您需要指定它是公开的。

public Dealer() { }

至于你的第二个问题,你不需要告诉你的方法它们属于这个类。他们已经意识到了。像这样更改您的方法签名:

public Tuple<int, string> GetCard(int cardNum)
{
// getter
return deck[cardNum];
}

请注意,现在该方法是公开的,并且我们的范围适当。此外,请注意方法名称中的 PascalCasing。这是 C# 中方法名称的适当命名约定。

另外,另一方面,由于 C# 是一种托管语言,您可能不需要析构函数。

关于c# - 无法使用构造函数实例化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23587772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com